@teambit/objects 0.0.710 → 0.0.711

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_chai","data","require","_versionModelExtended","_interopRequireDefault","_versionModelObject","_legacy","_version","_lodash","e","__esModule","default","getVersionWithDepsFixture","Version","parse","JSON","stringify","clone","versionWithDepsFixture","describe","version","idRaw","idParsed","before","versionFixture","id","it","expect","to","haveOwnProperty","not","dependencies","be","an","and","have","lengthOf","Object","keys","hash","versionFixtureHash","calculateHash","toString","equal","versionFromContent","validateFunc","beforeEach","validate","throw","errMsg","mainFile","undefined","files","file","name","relativePath","packageDependencies","lodash","userLib","devPackageDependencies","peerPackageDependencies","devDependencies","flattenedDependencies","changeVersion","log","bindingPrefix","packageJsonChangedProps","main","bin","overrides","exclude","scripts","schema","SchemaName","Harmony","compiler","dists","Legacy","relativePaths","customResolvedPaths"],"sources":["version.spec.ts"],"sourcesContent":["import { expect } from 'chai';\n\nimport versionWithDepsFixture from '../fixtures/version-model-extended.json';\nimport versionFixture from '../fixtures/version-model-object.json';\nimport { SchemaName } from '@teambit/legacy.consumer-component';\nimport Version from './version';\nimport { clone } from 'lodash';\n\nconst getVersionWithDepsFixture = () => {\n return Version.parse(JSON.stringify(clone(versionWithDepsFixture)), '12c830ed25854dc731b58e014c6b4960ccb59092');\n};\n\ndescribe('Version', () => {\n describe('id()', () => {\n describe('simple version', () => {\n let version;\n let idRaw;\n let idParsed;\n before(() => {\n // @ts-ignore\n version = new Version(versionFixture);\n idRaw = version.id();\n idParsed = JSON.parse(idRaw);\n });\n it('should have mainFile property', () => {\n expect(idParsed).to.haveOwnProperty('mainFile');\n });\n it('should have files property', () => {\n expect(idParsed).to.haveOwnProperty('files');\n });\n it('should have log property', () => {\n expect(idParsed).to.haveOwnProperty('log');\n });\n it('should have dependencies property', () => {\n expect(idParsed).to.haveOwnProperty('dependencies');\n });\n it('should have packageDependencies property', () => {\n expect(idParsed).to.haveOwnProperty('packageDependencies');\n });\n it('should have bindingPrefix property', () => {\n expect(idParsed).to.haveOwnProperty('bindingPrefix');\n });\n it('should not have docs property', () => {\n expect(idParsed).to.not.haveOwnProperty('docs');\n });\n it('should not have devDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('devDependencies');\n });\n it('should not have flattenedDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('flattenedDependencies');\n });\n it('should not have devPackageDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('devPackageDependencies');\n });\n it('should not have peerPackageDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('peerPackageDependencies');\n });\n });\n describe('version with dependencies', () => {\n let dependencies;\n before(() => {\n const version = getVersionWithDepsFixture();\n const idRaw = version.id();\n const idParsed = JSON.parse(idRaw);\n dependencies = idParsed.dependencies;\n });\n it('dependencies should be an array', () => {\n expect(dependencies).to.be.an('array').and.have.lengthOf(1);\n });\n it('dependencies should have id property only (relativePaths removed)', () => {\n expect(dependencies[0]).to.haveOwnProperty('id');\n expect(dependencies[0]).to.not.haveOwnProperty('relativePaths');\n expect(dependencies[0]).to.not.haveOwnProperty('nonExistProperty');\n expect(Object.keys(dependencies[0])).to.have.lengthOf(1);\n });\n // relativePaths tests removed - no longer included in Version.id() hash for Harmony components\n });\n });\n describe('hash()', () => {\n let version: Version;\n let hash;\n const versionFixtureHash = '4f67925a80b5e1f52dd1177196bf4c003d2f8798';\n before(() => {\n // @ts-ignore\n version = new Version(versionFixture);\n hash = version.calculateHash();\n });\n it('should have a correct hash string', () => {\n expect(hash.toString()).to.equal(versionFixtureHash);\n });\n it('should have a the same hash string also when loading the version from contents', () => {\n const versionFromContent = Version.parse(JSON.stringify(versionFixture), hash.toString());\n expect(versionFromContent.hash().toString()).to.equal(versionFixtureHash);\n });\n });\n describe('validate()', () => {\n let version;\n let validateFunc;\n beforeEach(() => {\n version = getVersionWithDepsFixture();\n validateFunc = () => version.validate();\n });\n it('should not throw when it has a valid version', () => {\n expect(validateFunc).to.not.throw();\n });\n it('should throw when mainFile is empty', () => {\n const errMsg = 'mainFile is missing';\n version.mainFile = null;\n expect(validateFunc).to.throw(errMsg);\n version.mainFile = '';\n expect(validateFunc).to.throw(errMsg);\n version.mainFile = undefined;\n expect(validateFunc).to.throw(errMsg);\n });\n it('should throw when mainFile path is absolute', () => {\n version.mainFile = '/tmp/main.js';\n expect(validateFunc).to.throw(`mainFile ${version.mainFile} is invalid`);\n });\n it('should throw when mainFile path is Windows format', () => {\n version.mainFile = 'a\\\\tmp.js';\n expect(validateFunc).to.throw(`mainFile ${version.mainFile} is invalid`);\n });\n it('should throw when the files are missing', () => {\n version.files = undefined;\n expect(validateFunc).to.throw('files are missing');\n version.files = null;\n expect(validateFunc).to.throw('files are missing');\n version.files = [];\n expect(validateFunc).to.throw('files are missing');\n });\n it('should throw when the file has no hash', () => {\n version.files[0].file = '';\n expect(validateFunc).to.throw('missing the hash');\n });\n it('should throw when the file has no name', () => {\n version.files[0].name = '';\n expect(validateFunc).to.throw('missing the name');\n });\n it('should throw when the file.name is not a string', () => {\n version.files[0].name = true;\n expect(validateFunc).to.throw('to be string, got boolean');\n });\n it('should throw when the file hash is not a string', () => {\n version.files[0].file.hash = [];\n expect(validateFunc).to.throw('to be string, got object');\n });\n it('should throw when the main file is not in the file lists', () => {\n version.files[0].relativePath = 'anotherFile.js';\n expect(validateFunc).to.throw('unable to find the mainFile');\n });\n it('should throw when the two files have the same name but different letter cases', () => {\n version.files[1] = clone(version.files[0]);\n version.files[1].relativePath = 'bar/Foo.ts';\n expect(validateFunc).to.throw('files are duplicated bar/foo.ts, bar/Foo.ts');\n });\n it('should throw for an invalid package version', () => {\n version.packageDependencies = { lodash: 34 };\n expect(validateFunc).to.throw('expected version of \"lodash\" to be string, got number');\n });\n it('should not throw for a package version which is a git url', () => {\n version.packageDependencies = { userLib: 'gitreadonly ssh://git@git.bit.io' };\n expect(validateFunc).to.not.throw();\n });\n it('should throw for invalid packageDependencies type', () => {\n version.packageDependencies = 'invalid packages';\n expect(validateFunc).to.throw('to be object, got string');\n });\n it('should throw for invalid devPackageDependencies type', () => {\n version.devPackageDependencies = [1, 2, 3];\n expect(validateFunc).to.throw('to be object, got array');\n });\n it('should throw for invalid peerPackageDependencies type', () => {\n version.peerPackageDependencies = true;\n expect(validateFunc).to.throw('to be object, got boolean');\n });\n it('should throw when dependencies are invalid', () => {\n version.dependencies = {};\n expect(validateFunc).to.throw('dependencies must be an instance of Dependencies, got object');\n });\n it('should throw when devDependencies are invalid', () => {\n version.devDependencies = {};\n expect(validateFunc).to.throw('devDependencies must be an instance of Dependencies, got object');\n });\n it('should throw when there are dependencies and the flattenDependencies are empty', () => {\n version.flattenedDependencies = [];\n expect(validateFunc).to.throw('it has dependencies but its flattenedDependencies is empty');\n });\n it('should throw when a flattenDependency is invalid', () => {\n version.flattenedDependencies = [1234];\n expect(validateFunc).to.throw('expected to be ComponentID, got number');\n });\n it('should throw when a flattenDependency does not have a version', () => {\n version.flattenedDependencies[0] = version.flattenedDependencies[0].changeVersion(null);\n expect(validateFunc).to.throw('does not have a version');\n });\n it('should throw when the log is empty', () => {\n version.log = undefined;\n expect(validateFunc).to.throw('log object is missing');\n });\n it('should throw when the log has an invalid type', () => {\n version.log = [];\n expect(validateFunc).to.throw('to be object, got array');\n });\n it('should throw when the bindingPrefix has an invalid type', () => {\n version.bindingPrefix = {};\n expect(validateFunc).to.throw('to be string, got object');\n });\n it('should throw when packageJsonChangedProps tries to override built-in package.json prop', () => {\n version.packageJsonChangedProps = { main: 'my-new-main.js' };\n expect(validateFunc).to.throw('the packageJsonChangedProps should not override the prop main');\n });\n it('should throw when packageJsonChangedProps is not an object', () => {\n version.packageJsonChangedProps = [1, 2, 3, 4];\n expect(validateFunc).to.throw('expected packageJsonChangedProps to be object, got array');\n });\n it('should throw when packageJsonChangedProps has a non-compliant npm value', () => {\n version.packageJsonChangedProps = { bin: 1234 };\n expect(validateFunc).to.throw('the generated package.json field \"bin\" is not compliant with npm requirements');\n });\n it('should not throw when packageJsonChangedProps has a compliant npm value', () => {\n version.packageJsonChangedProps = { bin: 'my-file.js' };\n expect(validateFunc).to.not.throw();\n });\n it('should throw when overrides has a \"system\" field (field that Bit uses internally for consumer overrides)', () => {\n version.overrides = { exclude: ['*'] };\n expect(validateFunc).to.throw('the \"overrides\" has a forbidden key \"exclude\"');\n });\n it('should throw when overrides has a package.json field that is non-compliant npm value', () => {\n version.overrides = { bin: 1234 };\n expect(validateFunc).to.throw(\n '\"overrides.bin\" is a package.json field but is not compliant with npm requirements'\n );\n });\n it('should not throw when overrides has a package.json field that is compliant npm value', () => {\n version.overrides = { bin: 'my-file.js' };\n expect(validateFunc).to.not.throw();\n });\n it('should show the original error from package-json-validator when overrides has a package.json field that is non-compliant npm value', () => {\n version.overrides = { scripts: false };\n expect(validateFunc).to.throw('Type for field scripts, was expected to be object, not boolean');\n });\n describe('Harmony schema', () => {\n beforeEach(() => {\n version.schema = SchemaName.Harmony;\n });\n it('should throw for having relativePaths on Harmony', () => {\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.throw('the dependencies should not have relativePaths');\n });\n it('should throw for having relativePaths on any other version other than legacy', () => {\n version.schema = '2.0.0';\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.throw('the dependencies should not have relativePaths');\n });\n it('should not throw for having relativePaths on legacy', () => {\n version.schema = SchemaName.Legacy;\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.not.throw();\n });\n it('should throw for having customResolvedPaths on Harmony', () => {\n delete version.compiler;\n delete version.dists;\n version.dependencies.dependencies[0].relativePaths = [];\n version.customResolvedPaths = ['something'];\n expect(validateFunc).to.throw(\n 'the customResolvedPaths field is cannot have values according to schema \"1.0.0\"'\n );\n });\n it('should not throw when all is good', () => {\n delete version.compiler;\n delete version.dists;\n version.dependencies.dependencies[0].relativePaths = [];\n expect(validateFunc).to.not.throw();\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chai","data","require","_versionModelExtended","_interopRequireDefault","_versionModelObject","_legacy","_version","_lodash","_componentId","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","getVersionWithDepsFixture","Version","parse","JSON","stringify","clone","versionWithDepsFixture","describe","version","idRaw","idParsed","before","versionFixture","id","it","expect","to","haveOwnProperty","not","dependencies","be","an","and","have","lengthOf","hash","versionFixtureHash","calculateHash","toString","equal","versionFromContent","parseWithFlattened","flattened","flattenedDependencies","flattenedDevDependencies","scope","name","getLoadedFlattenedDependencies","map","deep","first","second","ComponentIdList","ComponentID","fromString","toObject","source","flattenedStr","loaderOf","objects","load","ref","find","obj","isEqual","original","moveFlattenedDependenciesToSource","toBuffer","contents","versionObj","property","flattenedDependenciesRef","refs","refsWithOptions","include","throw","parsed","loaded","loadFlattenedDependencies","fromDisk","diskRepo","getFromMemory","undefined","loadSync","loadFlattenedDependenciesSync","fromCache","cacheRepo","error","err","message","oldFormat","moved","validate","isEmpty","false","validateFunc","beforeEach","errMsg","mainFile","files","file","relativePath","packageDependencies","lodash","userLib","devPackageDependencies","peerPackageDependencies","devDependencies","changeVersion","log","bindingPrefix","packageJsonChangedProps","main","bin","overrides","exclude","scripts","schema","SchemaName","Harmony","compiler","dists","Legacy","relativePaths","customResolvedPaths"],"sources":["version.spec.ts"],"sourcesContent":["import { expect } from 'chai';\n\nimport versionWithDepsFixture from '../fixtures/version-model-extended.json';\nimport versionFixture from '../fixtures/version-model-object.json';\nimport { SchemaName } from '@teambit/legacy.consumer-component';\nimport Version from './version';\nimport type { ObjectsLoader } from './version';\nimport type Source from './source';\nimport type { Ref } from '../objects';\nimport { clone } from 'lodash';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\n\nconst getVersionWithDepsFixture = () => {\n return Version.parse(JSON.stringify(clone(versionWithDepsFixture)), '12c830ed25854dc731b58e014c6b4960ccb59092');\n};\n\ndescribe('Version', () => {\n describe('id()', () => {\n describe('simple version', () => {\n let version;\n let idRaw;\n let idParsed;\n before(() => {\n // @ts-ignore\n version = new Version(versionFixture);\n idRaw = version.id();\n idParsed = JSON.parse(idRaw);\n });\n it('should have mainFile property', () => {\n expect(idParsed).to.haveOwnProperty('mainFile');\n });\n it('should have files property', () => {\n expect(idParsed).to.haveOwnProperty('files');\n });\n it('should have log property', () => {\n expect(idParsed).to.haveOwnProperty('log');\n });\n it('should have dependencies property', () => {\n expect(idParsed).to.haveOwnProperty('dependencies');\n });\n it('should have packageDependencies property', () => {\n expect(idParsed).to.haveOwnProperty('packageDependencies');\n });\n it('should have bindingPrefix property', () => {\n expect(idParsed).to.haveOwnProperty('bindingPrefix');\n });\n it('should not have docs property', () => {\n expect(idParsed).to.not.haveOwnProperty('docs');\n });\n it('should not have devDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('devDependencies');\n });\n it('should not have flattenedDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('flattenedDependencies');\n });\n it('should not have devPackageDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('devPackageDependencies');\n });\n it('should not have peerPackageDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('peerPackageDependencies');\n });\n });\n describe('version with dependencies', () => {\n let dependencies;\n before(() => {\n const version = getVersionWithDepsFixture();\n const idRaw = version.id();\n const idParsed = JSON.parse(idRaw);\n dependencies = idParsed.dependencies;\n });\n it('dependencies should be an array', () => {\n expect(dependencies).to.be.an('array').and.have.lengthOf(1);\n });\n it('dependencies should have id property only (relativePaths removed)', () => {\n expect(dependencies[0]).to.haveOwnProperty('id');\n expect(dependencies[0]).to.not.haveOwnProperty('relativePaths');\n expect(dependencies[0]).to.not.haveOwnProperty('nonExistProperty');\n expect(Object.keys(dependencies[0])).to.have.lengthOf(1);\n });\n // relativePaths tests removed - no longer included in Version.id() hash for Harmony components\n });\n });\n describe('hash()', () => {\n let version: Version;\n let hash;\n const versionFixtureHash = '4f67925a80b5e1f52dd1177196bf4c003d2f8798';\n before(() => {\n // @ts-ignore\n version = new Version(versionFixture);\n hash = version.calculateHash();\n });\n it('should have a correct hash string', () => {\n expect(hash.toString()).to.equal(versionFixtureHash);\n });\n it('should have a the same hash string also when loading the version from contents', () => {\n const versionFromContent = Version.parse(JSON.stringify(versionFixture), hash.toString());\n expect(versionFromContent.hash().toString()).to.equal(versionFixtureHash);\n });\n });\n describe('flattenedDependencies', () => {\n const parseWithFlattened = (flattened: Record<string, any>) =>\n Version.parse(\n JSON.stringify({ ...versionWithDepsFixture, ...flattened }),\n '12c830ed25854dc731b58e014c6b4960ccb59092'\n );\n it('should parse id objects, id strings and the old flattenedDevDependencies', () => {\n const version = parseWithFlattened({\n flattenedDependencies: ['my-scope/is-type@0.0.1'],\n flattenedDevDependencies: [{ scope: 'my-scope', name: 'utils/is-string', version: '0.0.2' }],\n });\n expect(version.getLoadedFlattenedDependencies().map((id) => id.toString())).to.deep.equal([\n 'my-scope/is-type@0.0.1',\n 'my-scope/utils/is-string@0.0.2',\n ]);\n });\n it('should share the same id instance between versions', () => {\n const first = getVersionWithDepsFixture();\n const second = getVersionWithDepsFixture();\n expect(first.getLoadedFlattenedDependencies()).to.not.equal(second.getLoadedFlattenedDependencies());\n expect(first.getLoadedFlattenedDependencies()[0]).to.equal(second.getLoadedFlattenedDependencies()[0]);\n });\n it('should keep a list that was set, and serialize it', () => {\n const version = getVersionWithDepsFixture();\n version.flattenedDependencies = new ComponentIdList(ComponentID.fromString('my-scope/is-type@0.0.3'));\n expect(version.toObject().flattenedDependencies).to.deep.equal([\n { scope: 'my-scope', name: 'is-type', version: '0.0.3' },\n ]);\n });\n describe('stored in a separate object', () => {\n const hash = '12c830ed25854dc731b58e014c6b4960ccb59092';\n let source: Source;\n let version: Version;\n let flattenedStr: string[];\n const loaderOf = (objects: Source[]): ObjectsLoader => ({\n load: async (ref: Ref) => objects.find((obj) => obj.hash().isEqual(ref)),\n });\n before(() => {\n const original = getVersionWithDepsFixture();\n flattenedStr = original.getLoadedFlattenedDependencies().map((id) => id.toString());\n source = original.moveFlattenedDependenciesToSource() as Source;\n version = Version.parse(original.toBuffer(false).toString(), hash);\n });\n it('should save the ids as strings in the Source, and only the ref in the Version', () => {\n expect(JSON.parse(source.contents.toString())).to.deep.equal(flattenedStr);\n const versionObj = version.toObject();\n expect(versionObj).to.not.have.property('flattenedDependencies');\n expect(versionObj.flattenedDependenciesRef).to.equal(source.hash().toString());\n });\n it('should return the Source ref as one of the version refs, so it is fetched, exported and kept by GC', () => {\n const refs = version.refsWithOptions(false, false).map((ref) => ref.toString());\n expect(refs).to.include(source.hash().toString());\n });\n it('should throw when the list is read before it was loaded', () => {\n expect(() => version.getLoadedFlattenedDependencies()).to.throw('load them with loadFlattenedDependencies()');\n expect(() => version.flattenedDependencies).to.throw('load them with loadFlattenedDependencies()');\n });\n it('should load the list from the Source, and keep only the ref when saved again', async () => {\n const parsed = Version.parse(version.toBuffer(false).toString(), hash);\n const loaded = await parsed.loadFlattenedDependencies(loaderOf([source]));\n expect(loaded.map((id) => id.toString())).to.deep.equal(flattenedStr);\n expect(parsed.getLoadedFlattenedDependencies()).to.equal(loaded);\n expect(parsed.toObject()).to.not.have.property('flattenedDependencies');\n });\n it('should load the list synchronously, from the cache or from the disk', () => {\n const fromDisk = Version.parse(version.toBuffer(false).toString(), hash);\n const diskRepo = { getFromMemory: () => undefined, loadSync: () => source } as any;\n expect(fromDisk.loadFlattenedDependenciesSync(diskRepo).map((id) => id.toString())).to.deep.equal(flattenedStr);\n const fromCache = Version.parse(version.toBuffer(false).toString(), hash);\n const cacheRepo = { getFromMemory: () => source, loadSync: () => undefined } as any;\n expect(fromCache.loadFlattenedDependenciesSync(cacheRepo).map((id) => id.toString())).to.deep.equal(\n flattenedStr\n );\n expect(fromCache.flattenedDependenciesRef?.toString()).to.equal(source.hash().toString());\n });\n it('should save a newly set list in the Version, instead of the ref', () => {\n const parsed = Version.parse(version.toBuffer(false).toString(), hash);\n parsed.flattenedDependencies = new ComponentIdList(ComponentID.fromString('my-scope/is-type@0.0.3'));\n const versionObj = parsed.toObject();\n expect(versionObj).to.not.have.property('flattenedDependenciesRef');\n expect(versionObj.flattenedDependencies).to.deep.equal([\n { scope: 'my-scope', name: 'is-type', version: '0.0.3' },\n ]);\n });\n it('should throw, not return an empty list, when the Source is missing', async () => {\n const parsed = Version.parse(version.toBuffer(false).toString(), hash);\n let error: Error | undefined;\n try {\n await parsed.loadFlattenedDependencies(loaderOf([]));\n } catch (err: any) {\n error = err;\n }\n expect(error?.message).to.include(`unable to find the object ${source.hash().toString()}`);\n });\n it('should load the list of the old format without the loader', async () => {\n const oldFormat = getVersionWithDepsFixture();\n const loaded = await oldFormat.loadFlattenedDependencies(loaderOf([]));\n expect(loaded.map((id) => id.toString())).to.deep.equal(flattenedStr);\n });\n it('should validate the list when it was moved but is still loaded', () => {\n const moved = getVersionWithDepsFixture();\n moved.flattenedDependencies = new ComponentIdList(ComponentID.fromString('my-scope/is-type'));\n moved.moveFlattenedDependenciesToSource();\n expect(() => moved.validate()).to.throw('does not have a version');\n });\n it('should pass the validation although the list is not in the Version', () => {\n expect(version.dependencies.isEmpty()).to.be.false;\n expect(() => version.validate()).to.not.throw();\n });\n });\n });\n describe('validate()', () => {\n let version;\n let validateFunc;\n beforeEach(() => {\n version = getVersionWithDepsFixture();\n validateFunc = () => version.validate();\n });\n it('should not throw when it has a valid version', () => {\n expect(validateFunc).to.not.throw();\n });\n it('should throw when mainFile is empty', () => {\n const errMsg = 'mainFile is missing';\n version.mainFile = null;\n expect(validateFunc).to.throw(errMsg);\n version.mainFile = '';\n expect(validateFunc).to.throw(errMsg);\n version.mainFile = undefined;\n expect(validateFunc).to.throw(errMsg);\n });\n it('should throw when mainFile path is absolute', () => {\n version.mainFile = '/tmp/main.js';\n expect(validateFunc).to.throw(`mainFile ${version.mainFile} is invalid`);\n });\n it('should throw when mainFile path is Windows format', () => {\n version.mainFile = 'a\\\\tmp.js';\n expect(validateFunc).to.throw(`mainFile ${version.mainFile} is invalid`);\n });\n it('should throw when the files are missing', () => {\n version.files = undefined;\n expect(validateFunc).to.throw('files are missing');\n version.files = null;\n expect(validateFunc).to.throw('files are missing');\n version.files = [];\n expect(validateFunc).to.throw('files are missing');\n });\n it('should throw when the file has no hash', () => {\n version.files[0].file = '';\n expect(validateFunc).to.throw('missing the hash');\n });\n it('should throw when the file has no name', () => {\n version.files[0].name = '';\n expect(validateFunc).to.throw('missing the name');\n });\n it('should throw when the file.name is not a string', () => {\n version.files[0].name = true;\n expect(validateFunc).to.throw('to be string, got boolean');\n });\n it('should throw when the file hash is not a string', () => {\n version.files[0].file.hash = [];\n expect(validateFunc).to.throw('to be string, got object');\n });\n it('should throw when the main file is not in the file lists', () => {\n version.files[0].relativePath = 'anotherFile.js';\n expect(validateFunc).to.throw('unable to find the mainFile');\n });\n it('should throw when the two files have the same name but different letter cases', () => {\n version.files[1] = clone(version.files[0]);\n version.files[1].relativePath = 'bar/Foo.ts';\n expect(validateFunc).to.throw('files are duplicated bar/foo.ts, bar/Foo.ts');\n });\n it('should throw for an invalid package version', () => {\n version.packageDependencies = { lodash: 34 };\n expect(validateFunc).to.throw('expected version of \"lodash\" to be string, got number');\n });\n it('should not throw for a package version which is a git url', () => {\n version.packageDependencies = { userLib: 'gitreadonly ssh://git@git.bit.io' };\n expect(validateFunc).to.not.throw();\n });\n it('should throw for invalid packageDependencies type', () => {\n version.packageDependencies = 'invalid packages';\n expect(validateFunc).to.throw('to be object, got string');\n });\n it('should throw for invalid devPackageDependencies type', () => {\n version.devPackageDependencies = [1, 2, 3];\n expect(validateFunc).to.throw('to be object, got array');\n });\n it('should throw for invalid peerPackageDependencies type', () => {\n version.peerPackageDependencies = true;\n expect(validateFunc).to.throw('to be object, got boolean');\n });\n it('should throw when dependencies are invalid', () => {\n version.dependencies = {};\n expect(validateFunc).to.throw('dependencies must be an instance of Dependencies, got object');\n });\n it('should throw when devDependencies are invalid', () => {\n version.devDependencies = {};\n expect(validateFunc).to.throw('devDependencies must be an instance of Dependencies, got object');\n });\n it('should throw when there are dependencies and the flattenDependencies are empty', () => {\n version.flattenedDependencies = [];\n expect(validateFunc).to.throw('it has dependencies but its flattenedDependencies is empty');\n });\n it('should throw when a flattenDependency is invalid', () => {\n version.flattenedDependencies = [1234];\n expect(validateFunc).to.throw('expected to be ComponentID, got number');\n });\n it('should throw when a flattenDependency does not have a version', () => {\n version.flattenedDependencies[0] = version.flattenedDependencies[0].changeVersion(null);\n expect(validateFunc).to.throw('does not have a version');\n });\n it('should throw when the log is empty', () => {\n version.log = undefined;\n expect(validateFunc).to.throw('log object is missing');\n });\n it('should throw when the log has an invalid type', () => {\n version.log = [];\n expect(validateFunc).to.throw('to be object, got array');\n });\n it('should throw when the bindingPrefix has an invalid type', () => {\n version.bindingPrefix = {};\n expect(validateFunc).to.throw('to be string, got object');\n });\n it('should throw when packageJsonChangedProps tries to override built-in package.json prop', () => {\n version.packageJsonChangedProps = { main: 'my-new-main.js' };\n expect(validateFunc).to.throw('the packageJsonChangedProps should not override the prop main');\n });\n it('should throw when packageJsonChangedProps is not an object', () => {\n version.packageJsonChangedProps = [1, 2, 3, 4];\n expect(validateFunc).to.throw('expected packageJsonChangedProps to be object, got array');\n });\n it('should throw when packageJsonChangedProps has a non-compliant npm value', () => {\n version.packageJsonChangedProps = { bin: 1234 };\n expect(validateFunc).to.throw('the generated package.json field \"bin\" is not compliant with npm requirements');\n });\n it('should not throw when packageJsonChangedProps has a compliant npm value', () => {\n version.packageJsonChangedProps = { bin: 'my-file.js' };\n expect(validateFunc).to.not.throw();\n });\n it('should throw when overrides has a \"system\" field (field that Bit uses internally for consumer overrides)', () => {\n version.overrides = { exclude: ['*'] };\n expect(validateFunc).to.throw('the \"overrides\" has a forbidden key \"exclude\"');\n });\n it('should throw when overrides has a package.json field that is non-compliant npm value', () => {\n version.overrides = { bin: 1234 };\n expect(validateFunc).to.throw(\n '\"overrides.bin\" is a package.json field but is not compliant with npm requirements'\n );\n });\n it('should not throw when overrides has a package.json field that is compliant npm value', () => {\n version.overrides = { bin: 'my-file.js' };\n expect(validateFunc).to.not.throw();\n });\n it('should show the original error from package-json-validator when overrides has a package.json field that is non-compliant npm value', () => {\n version.overrides = { scripts: false };\n expect(validateFunc).to.throw('Type for field scripts, was expected to be object, not boolean');\n });\n describe('Harmony schema', () => {\n beforeEach(() => {\n version.schema = SchemaName.Harmony;\n });\n it('should throw for having relativePaths on Harmony', () => {\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.throw('the dependencies should not have relativePaths');\n });\n it('should throw for having relativePaths on any other version other than legacy', () => {\n version.schema = '2.0.0';\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.throw('the dependencies should not have relativePaths');\n });\n it('should not throw for having relativePaths on legacy', () => {\n version.schema = SchemaName.Legacy;\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.not.throw();\n });\n it('should throw for having customResolvedPaths on Harmony', () => {\n delete version.compiler;\n delete version.dists;\n version.dependencies.dependencies[0].relativePaths = [];\n version.customResolvedPaths = ['something'];\n expect(validateFunc).to.throw(\n 'the customResolvedPaths field is cannot have values according to schema \"1.0.0\"'\n );\n });\n it('should not throw when all is good', () => {\n delete version.compiler;\n delete version.dists;\n version.dependencies.dependencies[0].relativePaths = [];\n expect(validateFunc).to.not.throw();\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,14 +1,24 @@
1
1
  import type BitObject from './object';
2
+ import type Ref from './ref';
2
3
  import { ExportMetadata, Lane, LaneHistory, ModelComponent, Version, VersionHistory } from '../models';
3
4
  export declare class BitObjectList {
4
5
  private objects;
5
- constructor(objects: BitObject[]);
6
+ private objectsByRef;
7
+ /**
8
+ * `objectsByRef` maps the refs the objects were received with, so finding an object doesn't need hashing them all.
9
+ */
10
+ constructor(objects: BitObject[], objectsByRef?: Map<string, BitObject>);
6
11
  getComponents(): ModelComponent[];
7
12
  getVersions(): Version[];
8
13
  getLanes(): Lane[];
9
14
  getVersionHistories(): VersionHistory[];
10
15
  getLaneHistories(): LaneHistory[];
11
16
  getAll(): BitObject[];
17
+ /**
18
+ * finds an object of this list by its ref. it has the same signature as `Repository.load()`, so these objects can be
19
+ * used where a repository is expected, e.g. `Version.loadFlattenedDependencies()`.
20
+ */
21
+ load(ref: Ref): Promise<BitObject | undefined>;
12
22
  excludeTypes(types: string[]): BitObject[];
13
23
  getExportMetadata(): ExportMetadata | undefined;
14
24
  /**
@@ -12,8 +12,12 @@ function _models() {
12
12
  return data;
13
13
  }
14
14
  class BitObjectList {
15
- constructor(objects) {
15
+ /**
16
+ * `objectsByRef` maps the refs the objects were received with, so finding an object doesn't need hashing them all.
17
+ */
18
+ constructor(objects, objectsByRef = new Map()) {
16
19
  this.objects = objects;
20
+ this.objectsByRef = objectsByRef;
17
21
  }
18
22
  getComponents() {
19
23
  return this.objects.filter(object => object instanceof _models().ModelComponent);
@@ -33,6 +37,16 @@ class BitObjectList {
33
37
  getAll() {
34
38
  return this.objects;
35
39
  }
40
+
41
+ /**
42
+ * finds an object of this list by its ref. it has the same signature as `Repository.load()`, so these objects can be
43
+ * used where a repository is expected, e.g. `Version.loadFlattenedDependencies()`.
44
+ */
45
+ async load(ref) {
46
+ const object = this.objectsByRef.get(ref.toString());
47
+ // a received ref is not trusted, the found object is hashed to verify it.
48
+ return object?.hash().isEqual(ref) ? object : undefined;
49
+ }
36
50
  excludeTypes(types) {
37
51
  return this.objects.filter(object => !types.includes(object.getType()));
38
52
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_models","data","require","BitObjectList","constructor","objects","getComponents","filter","object","ModelComponent","getVersions","Version","getLanes","Lane","getVersionHistories","VersionHistory","getLaneHistories","LaneHistory","getAll","excludeTypes","types","includes","getType","getExportMetadata","find","ExportMetadata","getObjectsRequireMerge","typeRequireMerge","objectTypesRequireMerge","some","ObjClass","getObjectsNotRequireMerge","every","exports"],"sources":["bit-object-list.ts"],"sourcesContent":["import type BitObject from './object';\nimport { ExportMetadata, Lane, LaneHistory, ModelComponent, Version, VersionHistory } from '../models';\n\nexport class BitObjectList {\n constructor(private objects: BitObject[]) {}\n\n getComponents(): ModelComponent[] {\n return this.objects.filter((object) => object instanceof ModelComponent) as ModelComponent[];\n }\n\n getVersions(): Version[] {\n return this.objects.filter((object) => object instanceof Version) as Version[];\n }\n\n getLanes(): Lane[] {\n return this.objects.filter((object) => object instanceof Lane) as Lane[];\n }\n\n getVersionHistories(): VersionHistory[] {\n return this.objects.filter((object) => object instanceof VersionHistory) as VersionHistory[];\n }\n\n getLaneHistories(): LaneHistory[] {\n return this.objects.filter((object) => object instanceof LaneHistory) as LaneHistory[];\n }\n\n getAll(): BitObject[] {\n return this.objects;\n }\n\n excludeTypes(types: string[]): BitObject[] {\n return this.objects.filter((object) => !types.includes(object.getType()));\n }\n\n getExportMetadata(): ExportMetadata | undefined {\n return this.objects.find((object) => object instanceof ExportMetadata) as ExportMetadata | undefined;\n }\n\n /**\n * object that needs merge operation before saving them into the scope, such as ModelComponent\n */\n getObjectsRequireMerge() {\n const typeRequireMerge = this.objectTypesRequireMerge();\n return this.objects.filter((object) => typeRequireMerge.some((ObjClass) => object instanceof ObjClass));\n }\n\n /**\n * object that don't need merge operation and can be saved immediately into the scope.\n * such as Source or Version\n */\n getObjectsNotRequireMerge() {\n const typeRequireMerge = this.objectTypesRequireMerge();\n return this.objects.filter((object) => typeRequireMerge.every((ObjClass) => !(object instanceof ObjClass)));\n }\n\n private objectTypesRequireMerge() {\n return [ModelComponent, Lane, VersionHistory, LaneHistory];\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,aAAa,CAAC;EACzBC,WAAWA,CAASC,OAAoB,EAAE;IAAA,KAAtBA,OAAoB,GAApBA,OAAoB;EAAG;EAE3CC,aAAaA,CAAA,EAAqB;IAChC,OAAO,IAAI,CAACD,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYC,wBAAc,CAAC;EAC1E;EAEAC,WAAWA,CAAA,EAAc;IACvB,OAAO,IAAI,CAACL,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYG,iBAAO,CAAC;EACnE;EAEAC,QAAQA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACP,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYK,cAAI,CAAC;EAChE;EAEAC,mBAAmBA,CAAA,EAAqB;IACtC,OAAO,IAAI,CAACT,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYO,wBAAc,CAAC;EAC1E;EAEAC,gBAAgBA,CAAA,EAAkB;IAChC,OAAO,IAAI,CAACX,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYS,qBAAW,CAAC;EACvE;EAEAC,MAAMA,CAAA,EAAgB;IACpB,OAAO,IAAI,CAACb,OAAO;EACrB;EAEAc,YAAYA,CAACC,KAAe,EAAe;IACzC,OAAO,IAAI,CAACf,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAK,CAACY,KAAK,CAACC,QAAQ,CAACb,MAAM,CAACc,OAAO,CAAC,CAAC,CAAC,CAAC;EAC3E;EAEAC,iBAAiBA,CAAA,EAA+B;IAC9C,OAAO,IAAI,CAAClB,OAAO,CAACmB,IAAI,CAAEhB,MAAM,IAAKA,MAAM,YAAYiB,wBAAc,CAAC;EACxE;;EAEA;AACF;AACA;EACEC,sBAAsBA,CAAA,EAAG;IACvB,MAAMC,gBAAgB,GAAG,IAAI,CAACC,uBAAuB,CAAC,CAAC;IACvD,OAAO,IAAI,CAACvB,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAKmB,gBAAgB,CAACE,IAAI,CAAEC,QAAQ,IAAKtB,MAAM,YAAYsB,QAAQ,CAAC,CAAC;EACzG;;EAEA;AACF;AACA;AACA;EACEC,yBAAyBA,CAAA,EAAG;IAC1B,MAAMJ,gBAAgB,GAAG,IAAI,CAACC,uBAAuB,CAAC,CAAC;IACvD,OAAO,IAAI,CAACvB,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAKmB,gBAAgB,CAACK,KAAK,CAAEF,QAAQ,IAAK,EAAEtB,MAAM,YAAYsB,QAAQ,CAAC,CAAC,CAAC;EAC7G;EAEQF,uBAAuBA,CAAA,EAAG;IAChC,OAAO,CAACnB,wBAAc,EAAEI,cAAI,EAAEE,wBAAc,EAAEE,qBAAW,CAAC;EAC5D;AACF;AAACgB,OAAA,CAAA9B,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["_models","data","require","BitObjectList","constructor","objects","objectsByRef","Map","getComponents","filter","object","ModelComponent","getVersions","Version","getLanes","Lane","getVersionHistories","VersionHistory","getLaneHistories","LaneHistory","getAll","load","ref","get","toString","hash","isEqual","undefined","excludeTypes","types","includes","getType","getExportMetadata","find","ExportMetadata","getObjectsRequireMerge","typeRequireMerge","objectTypesRequireMerge","some","ObjClass","getObjectsNotRequireMerge","every","exports"],"sources":["bit-object-list.ts"],"sourcesContent":["import type BitObject from './object';\nimport type Ref from './ref';\nimport { ExportMetadata, Lane, LaneHistory, ModelComponent, Version, VersionHistory } from '../models';\n\nexport class BitObjectList {\n /**\n * `objectsByRef` maps the refs the objects were received with, so finding an object doesn't need hashing them all.\n */\n constructor(\n private objects: BitObject[],\n private objectsByRef = new Map<string, BitObject>()\n ) {}\n\n getComponents(): ModelComponent[] {\n return this.objects.filter((object) => object instanceof ModelComponent) as ModelComponent[];\n }\n\n getVersions(): Version[] {\n return this.objects.filter((object) => object instanceof Version) as Version[];\n }\n\n getLanes(): Lane[] {\n return this.objects.filter((object) => object instanceof Lane) as Lane[];\n }\n\n getVersionHistories(): VersionHistory[] {\n return this.objects.filter((object) => object instanceof VersionHistory) as VersionHistory[];\n }\n\n getLaneHistories(): LaneHistory[] {\n return this.objects.filter((object) => object instanceof LaneHistory) as LaneHistory[];\n }\n\n getAll(): BitObject[] {\n return this.objects;\n }\n\n /**\n * finds an object of this list by its ref. it has the same signature as `Repository.load()`, so these objects can be\n * used where a repository is expected, e.g. `Version.loadFlattenedDependencies()`.\n */\n async load(ref: Ref): Promise<BitObject | undefined> {\n const object = this.objectsByRef.get(ref.toString());\n // a received ref is not trusted, the found object is hashed to verify it.\n return object?.hash().isEqual(ref) ? object : undefined;\n }\n\n excludeTypes(types: string[]): BitObject[] {\n return this.objects.filter((object) => !types.includes(object.getType()));\n }\n\n getExportMetadata(): ExportMetadata | undefined {\n return this.objects.find((object) => object instanceof ExportMetadata) as ExportMetadata | undefined;\n }\n\n /**\n * object that needs merge operation before saving them into the scope, such as ModelComponent\n */\n getObjectsRequireMerge() {\n const typeRequireMerge = this.objectTypesRequireMerge();\n return this.objects.filter((object) => typeRequireMerge.some((ObjClass) => object instanceof ObjClass));\n }\n\n /**\n * object that don't need merge operation and can be saved immediately into the scope.\n * such as Source or Version\n */\n getObjectsNotRequireMerge() {\n const typeRequireMerge = this.objectTypesRequireMerge();\n return this.objects.filter((object) => typeRequireMerge.every((ObjClass) => !(object instanceof ObjClass)));\n }\n\n private objectTypesRequireMerge() {\n return [ModelComponent, Lane, VersionHistory, LaneHistory];\n }\n}\n"],"mappings":";;;;;;AAEA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,aAAa,CAAC;EACzB;AACF;AACA;EACEC,WAAWA,CACDC,OAAoB,EACpBC,YAAY,GAAG,IAAIC,GAAG,CAAoB,CAAC,EACnD;IAAA,KAFQF,OAAoB,GAApBA,OAAoB;IAAA,KACpBC,YAAY,GAAZA,YAAY;EACnB;EAEHE,aAAaA,CAAA,EAAqB;IAChC,OAAO,IAAI,CAACH,OAAO,CAACI,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYC,wBAAc,CAAC;EAC1E;EAEAC,WAAWA,CAAA,EAAc;IACvB,OAAO,IAAI,CAACP,OAAO,CAACI,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYG,iBAAO,CAAC;EACnE;EAEAC,QAAQA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACT,OAAO,CAACI,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYK,cAAI,CAAC;EAChE;EAEAC,mBAAmBA,CAAA,EAAqB;IACtC,OAAO,IAAI,CAACX,OAAO,CAACI,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYO,wBAAc,CAAC;EAC1E;EAEAC,gBAAgBA,CAAA,EAAkB;IAChC,OAAO,IAAI,CAACb,OAAO,CAACI,MAAM,CAAEC,MAAM,IAAKA,MAAM,YAAYS,qBAAW,CAAC;EACvE;EAEAC,MAAMA,CAAA,EAAgB;IACpB,OAAO,IAAI,CAACf,OAAO;EACrB;;EAEA;AACF;AACA;AACA;EACE,MAAMgB,IAAIA,CAACC,GAAQ,EAAkC;IACnD,MAAMZ,MAAM,GAAG,IAAI,CAACJ,YAAY,CAACiB,GAAG,CAACD,GAAG,CAACE,QAAQ,CAAC,CAAC,CAAC;IACpD;IACA,OAAOd,MAAM,EAAEe,IAAI,CAAC,CAAC,CAACC,OAAO,CAACJ,GAAG,CAAC,GAAGZ,MAAM,GAAGiB,SAAS;EACzD;EAEAC,YAAYA,CAACC,KAAe,EAAe;IACzC,OAAO,IAAI,CAACxB,OAAO,CAACI,MAAM,CAAEC,MAAM,IAAK,CAACmB,KAAK,CAACC,QAAQ,CAACpB,MAAM,CAACqB,OAAO,CAAC,CAAC,CAAC,CAAC;EAC3E;EAEAC,iBAAiBA,CAAA,EAA+B;IAC9C,OAAO,IAAI,CAAC3B,OAAO,CAAC4B,IAAI,CAAEvB,MAAM,IAAKA,MAAM,YAAYwB,wBAAc,CAAC;EACxE;;EAEA;AACF;AACA;EACEC,sBAAsBA,CAAA,EAAG;IACvB,MAAMC,gBAAgB,GAAG,IAAI,CAACC,uBAAuB,CAAC,CAAC;IACvD,OAAO,IAAI,CAAChC,OAAO,CAACI,MAAM,CAAEC,MAAM,IAAK0B,gBAAgB,CAACE,IAAI,CAAEC,QAAQ,IAAK7B,MAAM,YAAY6B,QAAQ,CAAC,CAAC;EACzG;;EAEA;AACF;AACA;AACA;EACEC,yBAAyBA,CAAA,EAAG;IAC1B,MAAMJ,gBAAgB,GAAG,IAAI,CAACC,uBAAuB,CAAC,CAAC;IACvD,OAAO,IAAI,CAAChC,OAAO,CAACI,MAAM,CAAEC,MAAM,IAAK0B,gBAAgB,CAACK,KAAK,CAAEF,QAAQ,IAAK,EAAE7B,MAAM,YAAY6B,QAAQ,CAAC,CAAC,CAAC;EAC7G;EAEQF,uBAAuBA,CAAA,EAAG;IAChC,OAAO,CAAC1B,wBAAc,EAAEI,cAAI,EAAEE,wBAAc,EAAEE,qBAAW,CAAC;EAC5D;AACF;AAACuB,OAAA,CAAAvC,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -357,12 +357,14 @@ class ObjectList {
357
357
  async parseObjects(throwForUnknownTypes, collectRawSources = false) {
358
358
  const concurrency = (0, _harmonyModules().concurrentIOLimit)();
359
359
  const rawSources = new Map();
360
+ const objectsByRef = new Map();
360
361
  const bitObjects = await (0, _toolboxPromise().pMapPool)(this.objects, async object => {
361
362
  try {
362
363
  const {
363
364
  object: bitObject,
364
365
  inflatedSize
365
366
  } = await _object().default.parseObjectWithSize(object.buffer);
367
+ objectsByRef.set(object.ref.toString(), bitObject);
366
368
  if (collectRawSources && bitObject.getType() === 'Source') {
367
369
  if (bitObject.hash().isEqual(object.ref)) {
368
370
  rawSources.set(bitObject, {
@@ -384,7 +386,7 @@ class ObjectList {
384
386
  concurrency
385
387
  });
386
388
  return {
387
- bitObjectList: new (_bitObjectList().BitObjectList)((0, _lodash().compact)(bitObjects)),
389
+ bitObjectList: new (_bitObjectList().BitObjectList)((0, _lodash().compact)(bitObjects), objectsByRef),
388
390
  rawSources
389
391
  };
390
392
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_tarStream","data","_interopRequireDefault","require","_toolboxPromise","_lodash","_stream","_crypto","_object","_bitObjectList","_ref","_legacy","_harmonyModules","_models","_legacy2","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TAR_STREAM_ERROR_FILENAME","OBJECT_LIST_CURRENT_SCHEMA","TAR_STREAM_START_FILENAME","TAR_STREAM_END_FILENAME","FETCH_FORMAT_OBJECT_LIST","exports","ObjectList","constructor","objects","count","getSha1Hash","hash","crypto","createHash","obj","update","Uint8Array","buffer","digest","mergeMultipleInstances","objectLists","objectList","objList","mergeObjectList","addIfNotExist","fromJsonString","jsonStr","jsonParsed","JSON","parse","Array","isArray","Error","ref","Ref","Buffer","from","toJsonString","stringify","toTar","pack","tarStream","entry","name","combineScopeAndHash","finalize","toReadableStream","Readable","fromTar","packStream","extract","objectItems","Promise","resolve","reject","on","header","stream","next","chunk","extractScopeAndHash","concat","err","resume","pipeline","fromTarToObjectStream","passThrough","PassThrough","objectMode","startData","endData","allData","emit","toString","logger","debug","write","schema","end","error","fromObjectStreamToTar","readable","scopeName","startFile","numOfFiles","endFile","errorMessage","message","fromReadableStream","nameSplit","split","hasScope","scope","undefined","objectItem","existing","Set","map","object","key","has","add","toBitObjects","throwForUnknownTypes","bitObjectList","parseObjects","toBitObjectsWithRawSources","collectRawSources","concurrency","concurrentIOLimit","rawSources","Map","bitObjects","pMapPool","bitObject","inflatedSize","BitObject","parseObjectWithSize","getType","isEqual","set","UnknownObjectType","type","BitObjectList","compact","fromBitObjects","compress","addScopeName","splitByScopeName","objectListPerScope","added","ExportMetadata","toConsoleLog","console","log","join"],"sources":["object-list.ts"],"sourcesContent":["import tarStream from 'tar-stream';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { compact } from 'lodash';\nimport { Readable, PassThrough, pipeline } from 'stream';\nimport crypto from 'crypto';\nimport BitObject from './object';\nimport { BitObjectList } from './bit-object-list';\nimport Ref from './ref';\nimport { logger } from '@teambit/legacy.logger';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport { ExportMetadata } from '../models';\nimport { UnknownObjectType } from '@teambit/legacy.scope';\n\n/**\n * when error occurred during streaming between HTTP server and client, there is no good way to\n * indicate this other than sending a new file with a special name and the error message.\n */\nconst TAR_STREAM_ERROR_FILENAME = '.BIT.ERROR';\n/**\n * schema 1.0.0 - added the start and end file with basic info\n */\nconst OBJECT_LIST_CURRENT_SCHEMA = '1.0.0';\nconst TAR_STREAM_START_FILENAME = '.BIT.START';\nconst TAR_STREAM_END_FILENAME = '.BIT.END';\n\ntype StartFile = {\n schema: string;\n scopeName: string;\n};\ntype EndFile = {\n numOfFiles: number;\n scopeName: string;\n};\n\nexport type ObjectItem = {\n ref: Ref;\n buffer: Buffer; // zlib deflated BitObject\n type?: string; // for future use. e.g. to be able to export only Component/Version types but not Source/Artifact, etc.\n scope?: string; // used for the export process\n};\n\nexport const FETCH_FORMAT_OBJECT_LIST = 'ObjectList';\n\n/**\n * Stream.Readable that operates with objectMode, while each 'data' event emits one ObjectItem object.\n */\nexport type ObjectItemsStream = Readable;\n\n/**\n * compressed buffer of an object (as stored on the filesystem) and the size of its inflated content.\n */\nexport type CompressedObject = { buffer: Buffer; inflatedSize: number };\n\n/**\n * hash => compressed object\n */\nexport type RawObjectsMap = Map<BitObject, CompressedObject & { ref: Ref }>;\n\nexport class ObjectList {\n constructor(public objects: ObjectItem[] = []) {}\n\n count() {\n return this.objects.length;\n }\n\n /**\n * Generates a SHA1 hash from all object buffers.\n * Used to identify duplicate export requests during retries.\n * Performance wise, it's not too bad. ~98ms for 150 components on CircleCI.\n */\n getSha1Hash(): string {\n const hash = crypto.createHash('sha1');\n for (const obj of this.objects) {\n hash.update(new Uint8Array(obj.buffer));\n }\n return hash.digest('hex');\n }\n\n static mergeMultipleInstances(objectLists: ObjectList[]): ObjectList {\n const objectList = new ObjectList();\n objectLists.forEach((objList) => objectList.mergeObjectList(objList));\n return objectList;\n }\n mergeObjectList(objectList: ObjectList) {\n this.addIfNotExist(objectList.objects);\n }\n static fromJsonString(jsonStr: string): ObjectList {\n const jsonParsed = JSON.parse(jsonStr);\n if (!Array.isArray(jsonParsed)) {\n throw new Error(`fromJsonString expect an array, got ${typeof jsonParsed}`);\n }\n jsonParsed.forEach((obj) => {\n obj.ref = new Ref(obj.ref.hash);\n obj.buffer = Buffer.from(obj.buffer);\n });\n return new ObjectList(jsonParsed);\n }\n toJsonString(): string {\n return JSON.stringify(this.objects);\n }\n toTar(): NodeJS.ReadableStream {\n const pack = tarStream.pack();\n this.objects.forEach((obj) => {\n pack.entry({ name: ObjectList.combineScopeAndHash(obj) }, obj.buffer);\n });\n pack.finalize();\n return pack;\n }\n toReadableStream(): ObjectItemsStream {\n return Readable.from(this.objects);\n }\n static async fromTar(packStream: NodeJS.ReadableStream): Promise<ObjectList> {\n const extract = tarStream.extract();\n const objectItems: ObjectItem[] = await new Promise((resolve, reject) => {\n const objects: ObjectItem[] = [];\n extract.on('entry', (header, stream, next) => {\n const data: Buffer[] = [];\n stream.on('data', (chunk) => {\n data.push(chunk);\n });\n stream.on('end', () => {\n objects.push({\n ...ObjectList.extractScopeAndHash(header.name),\n buffer: Buffer.concat(data as unknown as Uint8Array[]),\n });\n next(); // ready for next entry\n });\n stream.on('error', (err) => reject(err));\n\n stream.resume(); // just auto drain the stream\n });\n\n extract.on('finish', () => {\n resolve(objects);\n });\n\n // unlike `pipe`, it rejects when the input stream fails or the extractor fails (e.g. a truncated tar).\n pipeline(packStream, extract, (err) => {\n if (err) reject(err);\n });\n });\n return new ObjectList(objectItems);\n }\n\n static fromTarToObjectStream(packStream: NodeJS.ReadableStream): ObjectItemsStream {\n const passThrough = new PassThrough({ objectMode: true });\n const extract = tarStream.extract();\n let startData: StartFile | undefined;\n let endData: EndFile | undefined;\n extract.on('entry', (header, stream, next) => {\n const data: Buffer[] = [];\n stream.on('data', (chunk) => {\n data.push(chunk);\n });\n stream.on('end', () => {\n const allData = Buffer.concat(data as unknown as Uint8Array[]);\n if (header.name === TAR_STREAM_ERROR_FILENAME) {\n passThrough.emit('error', new Error(allData.toString()));\n return;\n }\n if (header.name === TAR_STREAM_START_FILENAME) {\n startData = JSON.parse(allData.toString());\n logger.debug('fromTarToObjectStream, start getting data', startData);\n next();\n return;\n }\n if (header.name === TAR_STREAM_END_FILENAME) {\n endData = JSON.parse(allData.toString());\n logger.debug('fromTarToObjectStream, finished getting data', endData);\n next();\n return;\n }\n passThrough.write({ ...ObjectList.extractScopeAndHash(header.name), buffer: allData });\n next(); // ready for next entry\n });\n stream.on('error', (err) => {\n passThrough.emit('error', err);\n });\n\n stream.resume(); // just auto drain the stream\n });\n\n // not sure if needed\n extract.on('error', (err) => {\n passThrough.emit('error', err);\n });\n\n extract.on('finish', () => {\n if (startData?.schema === OBJECT_LIST_CURRENT_SCHEMA && !endData) {\n // wasn't able to find a better way to indicate whether the server aborted the request\n // see https://github.com/node-fetch/node-fetch/issues/1117\n passThrough.emit(\n 'error',\n new Error(`server terminated the stream unexpectedly (metadata: ${JSON.stringify(startData)})`)\n );\n }\n passThrough.end();\n });\n pipeline(packStream, extract, (err) => {\n if (err) {\n logger.error('fromTarToObjectStream, pipeline', err);\n passThrough.emit('error', err);\n } else {\n logger.debug('fromTarToObjectStream, pipeline is completed');\n }\n });\n\n return passThrough;\n }\n\n static fromObjectStreamToTar(readable: Readable, scopeName: string) {\n const pack = tarStream.pack();\n const startFile: StartFile = { schema: OBJECT_LIST_CURRENT_SCHEMA, scopeName };\n logger.debug('fromObjectStreamToTar, start sending data', startFile);\n pack.entry({ name: TAR_STREAM_START_FILENAME }, JSON.stringify(startFile));\n let numOfFiles = 0;\n readable.on('data', (obj: ObjectItem) => {\n numOfFiles += 1;\n pack.entry({ name: ObjectList.combineScopeAndHash(obj) }, obj.buffer);\n });\n readable.on('end', () => {\n const endFile: EndFile = { numOfFiles, scopeName };\n logger.debug('fromObjectStreamToTar, finished sending data', endFile);\n pack.entry({ name: TAR_STREAM_END_FILENAME }, JSON.stringify(endFile));\n pack.finalize();\n });\n readable.on('error', (err) => {\n const errorMessage = err.message || `unexpected error (${err.name})`;\n logger.error(`ObjectList.fromObjectStreamToTar, streaming an error as a file`, err);\n pack.entry({ name: TAR_STREAM_ERROR_FILENAME }, errorMessage);\n pack.finalize();\n });\n return pack;\n }\n\n static async fromReadableStream(readable: ObjectItemsStream): Promise<ObjectList> {\n const objectItems: ObjectItem[] = [];\n for await (const obj of readable) {\n objectItems.push(obj);\n }\n return new ObjectList(objectItems);\n }\n\n /**\n * the opposite of this.combineScopeAndHash\n */\n static extractScopeAndHash(name: string): { scope?: string; ref: Ref } {\n const nameSplit = name.split('/');\n const hasScope = nameSplit.length > 1;\n return {\n scope: hasScope ? nameSplit[0] : undefined,\n ref: new Ref(hasScope ? nameSplit[1] : nameSplit[0]),\n };\n }\n /**\n * the opposite of this.extractScopeAndHash\n */\n static combineScopeAndHash(objectItem: ObjectItem): string {\n const scope = objectItem.scope ? `${objectItem.scope}/` : '';\n return `${scope}${objectItem.ref.hash}`;\n }\n\n addIfNotExist(objectItems: ObjectItem[]) {\n const existing = new Set(this.objects.map((object) => ObjectList.combineScopeAndHash(object)));\n objectItems.forEach((objectItem) => {\n const key = ObjectList.combineScopeAndHash(objectItem);\n if (existing.has(key)) return;\n existing.add(key);\n this.objects.push(objectItem);\n });\n }\n\n async toBitObjects(throwForUnknownTypes = false): Promise<BitObjectList> {\n const { bitObjectList } = await this.parseObjects(throwForUnknownTypes);\n return bitObjectList;\n }\n\n /**\n * same as `toBitObjects`, but also returns the original compressed buffers of the Source objects (files/artifacts)\n * whose content matches their ref. Sources are immutable, so these buffers can be written to the filesystem as is,\n * saving the costly re-compression. (significant for components with thousands of files).\n */\n async toBitObjectsWithRawSources(): Promise<{ bitObjectList: BitObjectList; rawSources: RawObjectsMap }> {\n return this.parseObjects(false, true);\n }\n\n private async parseObjects(\n throwForUnknownTypes: boolean,\n collectRawSources = false\n ): Promise<{ bitObjectList: BitObjectList; rawSources: RawObjectsMap }> {\n const concurrency = concurrentIOLimit();\n const rawSources: RawObjectsMap = new Map();\n const bitObjects = await pMapPool(\n this.objects,\n async (object) => {\n try {\n const { object: bitObject, inflatedSize } = await BitObject.parseObjectWithSize(object.buffer);\n if (collectRawSources && bitObject.getType() === 'Source') {\n if (bitObject.hash().isEqual(object.ref)) {\n rawSources.set(bitObject, { buffer: object.buffer, inflatedSize, ref: object.ref });\n }\n }\n return bitObject;\n } catch (err) {\n if (throwForUnknownTypes || !(err instanceof UnknownObjectType)) {\n throw err;\n }\n logger.error(\n `toBitObjects, unable to parse object of type ${err.type}, ignoring it. please update your bit version`\n );\n return null;\n }\n },\n { concurrency }\n );\n return { bitObjectList: new BitObjectList(compact(bitObjects)), rawSources };\n }\n\n static async fromBitObjects(bitObjects: BitObject[]): Promise<ObjectList> {\n const concurrency = concurrentIOLimit();\n const objectItems = await pMapPool(\n bitObjects,\n async (obj) => ({\n ref: obj.hash(),\n buffer: await obj.compress(),\n type: obj.getType(),\n }),\n { concurrency }\n );\n return new ObjectList(objectItems);\n }\n\n addScopeName(scopeName: string) {\n this.objects.forEach((object) => {\n object.scope = scopeName;\n });\n }\n\n splitByScopeName(): { [scopeName: string]: ObjectList } {\n const objectListPerScope: { [scopeName: string]: ObjectList } = {};\n const added = new Set<string>();\n this.objects.forEach((obj) => {\n if (obj.type === ExportMetadata.name) {\n return; // no scope for this type. it's general for all export data from all scopes\n }\n if (!obj.scope) {\n throw new Error(`ObjectList: unable to split by scopeName, the scopeName is missing for ${obj.ref.hash}`);\n }\n const key = ObjectList.combineScopeAndHash(obj);\n if (added.has(key)) return;\n added.add(key);\n if (!objectListPerScope[obj.scope]) objectListPerScope[obj.scope] = new ObjectList();\n objectListPerScope[obj.scope].objects.push(obj);\n });\n return objectListPerScope;\n }\n\n /**\n * helps debugging\n */\n toConsoleLog() {\n console.log(this.objects.map((o) => o.ref.hash).join('\\n')); // eslint-disable-line no-console\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_tarStream","data","_interopRequireDefault","require","_toolboxPromise","_lodash","_stream","_crypto","_object","_bitObjectList","_ref","_legacy","_harmonyModules","_models","_legacy2","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TAR_STREAM_ERROR_FILENAME","OBJECT_LIST_CURRENT_SCHEMA","TAR_STREAM_START_FILENAME","TAR_STREAM_END_FILENAME","FETCH_FORMAT_OBJECT_LIST","exports","ObjectList","constructor","objects","count","getSha1Hash","hash","crypto","createHash","obj","update","Uint8Array","buffer","digest","mergeMultipleInstances","objectLists","objectList","objList","mergeObjectList","addIfNotExist","fromJsonString","jsonStr","jsonParsed","JSON","parse","Array","isArray","Error","ref","Ref","Buffer","from","toJsonString","stringify","toTar","pack","tarStream","entry","name","combineScopeAndHash","finalize","toReadableStream","Readable","fromTar","packStream","extract","objectItems","Promise","resolve","reject","on","header","stream","next","chunk","extractScopeAndHash","concat","err","resume","pipeline","fromTarToObjectStream","passThrough","PassThrough","objectMode","startData","endData","allData","emit","toString","logger","debug","write","schema","end","error","fromObjectStreamToTar","readable","scopeName","startFile","numOfFiles","endFile","errorMessage","message","fromReadableStream","nameSplit","split","hasScope","scope","undefined","objectItem","existing","Set","map","object","key","has","add","toBitObjects","throwForUnknownTypes","bitObjectList","parseObjects","toBitObjectsWithRawSources","collectRawSources","concurrency","concurrentIOLimit","rawSources","Map","objectsByRef","bitObjects","pMapPool","bitObject","inflatedSize","BitObject","parseObjectWithSize","set","getType","isEqual","UnknownObjectType","type","BitObjectList","compact","fromBitObjects","compress","addScopeName","splitByScopeName","objectListPerScope","added","ExportMetadata","toConsoleLog","console","log","join"],"sources":["object-list.ts"],"sourcesContent":["import tarStream from 'tar-stream';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { compact } from 'lodash';\nimport { Readable, PassThrough, pipeline } from 'stream';\nimport crypto from 'crypto';\nimport BitObject from './object';\nimport { BitObjectList } from './bit-object-list';\nimport Ref from './ref';\nimport { logger } from '@teambit/legacy.logger';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport { ExportMetadata } from '../models';\nimport { UnknownObjectType } from '@teambit/legacy.scope';\n\n/**\n * when error occurred during streaming between HTTP server and client, there is no good way to\n * indicate this other than sending a new file with a special name and the error message.\n */\nconst TAR_STREAM_ERROR_FILENAME = '.BIT.ERROR';\n/**\n * schema 1.0.0 - added the start and end file with basic info\n */\nconst OBJECT_LIST_CURRENT_SCHEMA = '1.0.0';\nconst TAR_STREAM_START_FILENAME = '.BIT.START';\nconst TAR_STREAM_END_FILENAME = '.BIT.END';\n\ntype StartFile = {\n schema: string;\n scopeName: string;\n};\ntype EndFile = {\n numOfFiles: number;\n scopeName: string;\n};\n\nexport type ObjectItem = {\n ref: Ref;\n buffer: Buffer; // zlib deflated BitObject\n type?: string; // for future use. e.g. to be able to export only Component/Version types but not Source/Artifact, etc.\n scope?: string; // used for the export process\n};\n\nexport const FETCH_FORMAT_OBJECT_LIST = 'ObjectList';\n\n/**\n * Stream.Readable that operates with objectMode, while each 'data' event emits one ObjectItem object.\n */\nexport type ObjectItemsStream = Readable;\n\n/**\n * compressed buffer of an object (as stored on the filesystem) and the size of its inflated content.\n */\nexport type CompressedObject = { buffer: Buffer; inflatedSize: number };\n\n/**\n * hash => compressed object\n */\nexport type RawObjectsMap = Map<BitObject, CompressedObject & { ref: Ref }>;\n\nexport class ObjectList {\n constructor(public objects: ObjectItem[] = []) {}\n\n count() {\n return this.objects.length;\n }\n\n /**\n * Generates a SHA1 hash from all object buffers.\n * Used to identify duplicate export requests during retries.\n * Performance wise, it's not too bad. ~98ms for 150 components on CircleCI.\n */\n getSha1Hash(): string {\n const hash = crypto.createHash('sha1');\n for (const obj of this.objects) {\n hash.update(new Uint8Array(obj.buffer));\n }\n return hash.digest('hex');\n }\n\n static mergeMultipleInstances(objectLists: ObjectList[]): ObjectList {\n const objectList = new ObjectList();\n objectLists.forEach((objList) => objectList.mergeObjectList(objList));\n return objectList;\n }\n mergeObjectList(objectList: ObjectList) {\n this.addIfNotExist(objectList.objects);\n }\n static fromJsonString(jsonStr: string): ObjectList {\n const jsonParsed = JSON.parse(jsonStr);\n if (!Array.isArray(jsonParsed)) {\n throw new Error(`fromJsonString expect an array, got ${typeof jsonParsed}`);\n }\n jsonParsed.forEach((obj) => {\n obj.ref = new Ref(obj.ref.hash);\n obj.buffer = Buffer.from(obj.buffer);\n });\n return new ObjectList(jsonParsed);\n }\n toJsonString(): string {\n return JSON.stringify(this.objects);\n }\n toTar(): NodeJS.ReadableStream {\n const pack = tarStream.pack();\n this.objects.forEach((obj) => {\n pack.entry({ name: ObjectList.combineScopeAndHash(obj) }, obj.buffer);\n });\n pack.finalize();\n return pack;\n }\n toReadableStream(): ObjectItemsStream {\n return Readable.from(this.objects);\n }\n static async fromTar(packStream: NodeJS.ReadableStream): Promise<ObjectList> {\n const extract = tarStream.extract();\n const objectItems: ObjectItem[] = await new Promise((resolve, reject) => {\n const objects: ObjectItem[] = [];\n extract.on('entry', (header, stream, next) => {\n const data: Buffer[] = [];\n stream.on('data', (chunk) => {\n data.push(chunk);\n });\n stream.on('end', () => {\n objects.push({\n ...ObjectList.extractScopeAndHash(header.name),\n buffer: Buffer.concat(data as unknown as Uint8Array[]),\n });\n next(); // ready for next entry\n });\n stream.on('error', (err) => reject(err));\n\n stream.resume(); // just auto drain the stream\n });\n\n extract.on('finish', () => {\n resolve(objects);\n });\n\n // unlike `pipe`, it rejects when the input stream fails or the extractor fails (e.g. a truncated tar).\n pipeline(packStream, extract, (err) => {\n if (err) reject(err);\n });\n });\n return new ObjectList(objectItems);\n }\n\n static fromTarToObjectStream(packStream: NodeJS.ReadableStream): ObjectItemsStream {\n const passThrough = new PassThrough({ objectMode: true });\n const extract = tarStream.extract();\n let startData: StartFile | undefined;\n let endData: EndFile | undefined;\n extract.on('entry', (header, stream, next) => {\n const data: Buffer[] = [];\n stream.on('data', (chunk) => {\n data.push(chunk);\n });\n stream.on('end', () => {\n const allData = Buffer.concat(data as unknown as Uint8Array[]);\n if (header.name === TAR_STREAM_ERROR_FILENAME) {\n passThrough.emit('error', new Error(allData.toString()));\n return;\n }\n if (header.name === TAR_STREAM_START_FILENAME) {\n startData = JSON.parse(allData.toString());\n logger.debug('fromTarToObjectStream, start getting data', startData);\n next();\n return;\n }\n if (header.name === TAR_STREAM_END_FILENAME) {\n endData = JSON.parse(allData.toString());\n logger.debug('fromTarToObjectStream, finished getting data', endData);\n next();\n return;\n }\n passThrough.write({ ...ObjectList.extractScopeAndHash(header.name), buffer: allData });\n next(); // ready for next entry\n });\n stream.on('error', (err) => {\n passThrough.emit('error', err);\n });\n\n stream.resume(); // just auto drain the stream\n });\n\n // not sure if needed\n extract.on('error', (err) => {\n passThrough.emit('error', err);\n });\n\n extract.on('finish', () => {\n if (startData?.schema === OBJECT_LIST_CURRENT_SCHEMA && !endData) {\n // wasn't able to find a better way to indicate whether the server aborted the request\n // see https://github.com/node-fetch/node-fetch/issues/1117\n passThrough.emit(\n 'error',\n new Error(`server terminated the stream unexpectedly (metadata: ${JSON.stringify(startData)})`)\n );\n }\n passThrough.end();\n });\n pipeline(packStream, extract, (err) => {\n if (err) {\n logger.error('fromTarToObjectStream, pipeline', err);\n passThrough.emit('error', err);\n } else {\n logger.debug('fromTarToObjectStream, pipeline is completed');\n }\n });\n\n return passThrough;\n }\n\n static fromObjectStreamToTar(readable: Readable, scopeName: string) {\n const pack = tarStream.pack();\n const startFile: StartFile = { schema: OBJECT_LIST_CURRENT_SCHEMA, scopeName };\n logger.debug('fromObjectStreamToTar, start sending data', startFile);\n pack.entry({ name: TAR_STREAM_START_FILENAME }, JSON.stringify(startFile));\n let numOfFiles = 0;\n readable.on('data', (obj: ObjectItem) => {\n numOfFiles += 1;\n pack.entry({ name: ObjectList.combineScopeAndHash(obj) }, obj.buffer);\n });\n readable.on('end', () => {\n const endFile: EndFile = { numOfFiles, scopeName };\n logger.debug('fromObjectStreamToTar, finished sending data', endFile);\n pack.entry({ name: TAR_STREAM_END_FILENAME }, JSON.stringify(endFile));\n pack.finalize();\n });\n readable.on('error', (err) => {\n const errorMessage = err.message || `unexpected error (${err.name})`;\n logger.error(`ObjectList.fromObjectStreamToTar, streaming an error as a file`, err);\n pack.entry({ name: TAR_STREAM_ERROR_FILENAME }, errorMessage);\n pack.finalize();\n });\n return pack;\n }\n\n static async fromReadableStream(readable: ObjectItemsStream): Promise<ObjectList> {\n const objectItems: ObjectItem[] = [];\n for await (const obj of readable) {\n objectItems.push(obj);\n }\n return new ObjectList(objectItems);\n }\n\n /**\n * the opposite of this.combineScopeAndHash\n */\n static extractScopeAndHash(name: string): { scope?: string; ref: Ref } {\n const nameSplit = name.split('/');\n const hasScope = nameSplit.length > 1;\n return {\n scope: hasScope ? nameSplit[0] : undefined,\n ref: new Ref(hasScope ? nameSplit[1] : nameSplit[0]),\n };\n }\n /**\n * the opposite of this.extractScopeAndHash\n */\n static combineScopeAndHash(objectItem: ObjectItem): string {\n const scope = objectItem.scope ? `${objectItem.scope}/` : '';\n return `${scope}${objectItem.ref.hash}`;\n }\n\n addIfNotExist(objectItems: ObjectItem[]) {\n const existing = new Set(this.objects.map((object) => ObjectList.combineScopeAndHash(object)));\n objectItems.forEach((objectItem) => {\n const key = ObjectList.combineScopeAndHash(objectItem);\n if (existing.has(key)) return;\n existing.add(key);\n this.objects.push(objectItem);\n });\n }\n\n async toBitObjects(throwForUnknownTypes = false): Promise<BitObjectList> {\n const { bitObjectList } = await this.parseObjects(throwForUnknownTypes);\n return bitObjectList;\n }\n\n /**\n * same as `toBitObjects`, but also returns the original compressed buffers of the Source objects (files/artifacts)\n * whose content matches their ref. Sources are immutable, so these buffers can be written to the filesystem as is,\n * saving the costly re-compression. (significant for components with thousands of files).\n */\n async toBitObjectsWithRawSources(): Promise<{ bitObjectList: BitObjectList; rawSources: RawObjectsMap }> {\n return this.parseObjects(false, true);\n }\n\n private async parseObjects(\n throwForUnknownTypes: boolean,\n collectRawSources = false\n ): Promise<{ bitObjectList: BitObjectList; rawSources: RawObjectsMap }> {\n const concurrency = concurrentIOLimit();\n const rawSources: RawObjectsMap = new Map();\n const objectsByRef = new Map<string, BitObject>();\n const bitObjects = await pMapPool(\n this.objects,\n async (object) => {\n try {\n const { object: bitObject, inflatedSize } = await BitObject.parseObjectWithSize(object.buffer);\n objectsByRef.set(object.ref.toString(), bitObject);\n if (collectRawSources && bitObject.getType() === 'Source') {\n if (bitObject.hash().isEqual(object.ref)) {\n rawSources.set(bitObject, { buffer: object.buffer, inflatedSize, ref: object.ref });\n }\n }\n return bitObject;\n } catch (err) {\n if (throwForUnknownTypes || !(err instanceof UnknownObjectType)) {\n throw err;\n }\n logger.error(\n `toBitObjects, unable to parse object of type ${err.type}, ignoring it. please update your bit version`\n );\n return null;\n }\n },\n { concurrency }\n );\n return { bitObjectList: new BitObjectList(compact(bitObjects), objectsByRef), rawSources };\n }\n\n static async fromBitObjects(bitObjects: BitObject[]): Promise<ObjectList> {\n const concurrency = concurrentIOLimit();\n const objectItems = await pMapPool(\n bitObjects,\n async (obj) => ({\n ref: obj.hash(),\n buffer: await obj.compress(),\n type: obj.getType(),\n }),\n { concurrency }\n );\n return new ObjectList(objectItems);\n }\n\n addScopeName(scopeName: string) {\n this.objects.forEach((object) => {\n object.scope = scopeName;\n });\n }\n\n splitByScopeName(): { [scopeName: string]: ObjectList } {\n const objectListPerScope: { [scopeName: string]: ObjectList } = {};\n const added = new Set<string>();\n this.objects.forEach((obj) => {\n if (obj.type === ExportMetadata.name) {\n return; // no scope for this type. it's general for all export data from all scopes\n }\n if (!obj.scope) {\n throw new Error(`ObjectList: unable to split by scopeName, the scopeName is missing for ${obj.ref.hash}`);\n }\n const key = ObjectList.combineScopeAndHash(obj);\n if (added.has(key)) return;\n added.add(key);\n if (!objectListPerScope[obj.scope]) objectListPerScope[obj.scope] = new ObjectList();\n objectListPerScope[obj.scope].objects.push(obj);\n });\n return objectListPerScope;\n }\n\n /**\n * helps debugging\n */\n toConsoleLog() {\n console.log(this.objects.map((o) => o.ref.hash).join('\\n')); // eslint-disable-line no-console\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -148,6 +148,10 @@ export default class Repository {
148
148
  * `size` is the object's inflated content size (see `InMemoryCache.set`).
149
149
  */
150
150
  setCache(object: BitObject, size?: number): this;
151
+ /**
152
+ * the object, if it's in memory: added during tag but not persisted yet, or cached. same lookup as `load()`.
153
+ */
154
+ getFromMemory(ref: Ref): BitObject | undefined;
151
155
  /**
152
156
  * an object evicted from the cache is still returned as long as it's in use elsewhere (see `LiveObjects`).
153
157
  */
@@ -671,6 +671,13 @@ class Repository {
671
671
  return this;
672
672
  }
673
673
 
674
+ /**
675
+ * the object, if it's in memory: added during tag but not persisted yet, or cached. same lookup as `load()`.
676
+ */
677
+ getFromMemory(ref) {
678
+ return this.objects[ref.hash.toString()] || this.getCache(ref);
679
+ }
680
+
674
681
  /**
675
682
  * an object evicted from the cache is still returned as long as it's in use elsewhere (see `LiveObjects`).
676
683
  */