@teambit/objects 0.0.207 → 0.0.212
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/export-metadata.js +0 -2
- package/dist/models/export-metadata.js.map +1 -1
- package/dist/models/lane.d.ts +2 -2
- package/dist/models/model-component.js +0 -3
- package/dist/models/model-component.js.map +1 -1
- package/dist/models/scopeMeta.js +0 -3
- package/dist/models/scopeMeta.js.map +1 -1
- package/dist/models/source.js +0 -1
- package/dist/models/source.js.map +1 -1
- package/dist/models/version.d.ts +3 -3
- package/dist/models/version.js +0 -3
- package/dist/models/version.js.map +1 -1
- package/dist/objects/object.js +0 -1
- package/dist/objects/object.js.map +1 -1
- package/dist/objects/raw-object.js +1 -11
- package/dist/objects/raw-object.js.map +1 -1
- package/dist/objects/repository.js +0 -1
- package/dist/objects/repository.js.map +1 -1
- package/dist/objects/scope-index.js +0 -1
- package/dist/objects/scope-index.js.map +1 -1
- package/models/export-metadata.ts +0 -1
- package/models/model-component.ts +0 -4
- package/models/scopeMeta.ts +0 -2
- package/models/source.ts +0 -1
- package/models/version.ts +0 -6
- package/objects/object.ts +0 -1
- package/objects/raw-object.ts +1 -11
- package/objects/repository.ts +0 -1
- package/objects/scope-index.ts +0 -1
- package/package.json +14 -14
- /package/dist/{preview-1755031953960.js → preview-1755131404775.js} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_uidNumber","_asyncMutex","_lodash","_bitError","_componentVersion","path","_interopRequireWildcard","_toolboxPromise","_legacy","_legacy2","_legacy3","_toolboxFs","_harmonyModules","_legacy4","_scopeIndex","_object","_objectList","_rawObject","_ref","_repositoryHooks","_harmonyModules2","_models","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","OBJECTS_BACKUP_DIR","OBJECTS_DIR","TRASH_DIR","Repository","constructor","scopePath","scopeJson","onRead","onPersist","cache","createInMemoryCache","maxSize","getMaxSizeForObjects","persistMutex","_persistMutex","Mutex","load","repository","init","scopeIndex","loadOptionallyCreateScopeIndex","remoteLanes","RemoteLanes","unmergedComponents","UnmergedComponents","create","ScopeIndex","reset","getPathByScopePath","join","reLoadScopeIndex","reloadScopeIndexIfNeed","force","latestScopeIndex","currentAllScopeIndexItems","getAll","latestAllScopeIndexItems","length","differenceWith","isEqual","ensureDir","fs","getPath","getBackupPath","dirName","backupPath","getTrashDir","getLicense","getPopulatedLicense","getScopeMetaObject","license","object","ScopeMeta","fromObject","name","ref","hash","buffer","compress","objectPath","hashPath","pathExists","hasMultiple","refs","concurrency","concurrentIOLimit","existingRefs","pMapPool","compact","throws","inMemoryObjects","objects","toString","HASH_SIZE","getFullRefFromShortHash","cached","getCache","fileContentsRaw","readFile","err","code","logger","error","message","trace","msg","assign","stack","Error","size","byteLength","fileContents","parsedObject","BitObject","parseObject","maxSizeToCache","setCache","list","types","listRefs","debug","map","loadGracefully","process","argv","includes","isTypeIncluded","obj","some","type","loadRefDeleteIfInvalid","loadRefOnlyIfType","push","onCompletedChunk","completed","moveOneObjectToTrash","undefined","typeNames","parseObjectOnlyIfType","cwd","matches","glob","str","replace","sep","isSnap","Ref","listRefsStartWith","shortHash","pathPrefix","listRawObjects","loadRaw","bitRawObject","BitRawObject","fromDeflatedBuffer","listObjectsFromIndex","indexType","filter","hashes","getHashesByQuery","getHashes","_getBitObjectsByHashes","getHashFromIndex","missingIndexItems","bitObjects","Promise","all","bitObject","indexItem","find","removeMany","item","write","missingStringified","toIdentifierString","OutdatedIndexJson","ModelComponent","Lane","added","addMany","raw","transformedContent","loadManyRaw","uniqRefs","uniqBy","loadManyRawIgnoreMissing","results","loadRawObject","loadSync","objectFile","readFileSync","parseSync","HashNotFound","removeFromCache","delete","clearCache","deleteAll","clearObjectsFromCache","backup","backupDir","objectsDir","emptyDirSync","copySync","add","forEach","removeObject","objectsToRemove","removeManyObjects","findMany","persist","validate","runExclusive","deleteObjectsFromFS","validateObjects","values","writeObjectsToTheFS","writeRemoteLanes","clearObjects","onPostObjectsPersist","catch","validateBeforePersist","_deleteOne","removed","moveObjectsToDir","dir","moveOneObjectToDir","moveObjectsToTrash","listTrash","getFromTrash","objectsFromTrash","trashObjPath","BitError","restoreFromTrash","restoreFromDir","overwrite","copy","currentPath","absDir","fullPath","move","deleteRecordsFromUnmergedComponents","compIds","removeMultipleComponents","count","_writeOne","pathToDelete","removeFile","contents","options","groupName","gid","resolveGroupId","writeFile","writeObjectsToPendingDir","objectList","pendingDir","objPath","readObjectsFromPendingDir","ObjectList","slice","exports","filePath","propagateDirs","unlink","parse","removeEmptyDir","resolve","reject","uidNumber","uid"],"sources":["repository.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport uidNumber from 'uid-number';\nimport { Mutex } from 'async-mutex';\nimport { compact, uniqBy, differenceWith, isEqual } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport type { ComponentID } from '@teambit/component-id';\nimport { HASH_SIZE, isSnap } from '@teambit/component-version';\nimport * as path from 'path';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { OBJECTS_DIR } from '@teambit/legacy.constants';\nimport { logger } from '@teambit/legacy.logger';\nimport type { ChownOptions, PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { glob, writeFile } from '@teambit/legacy.utils';\nimport { removeEmptyDir } from '@teambit/toolbox.fs.remove-empty-dir';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport type { Types, ScopeJson } from '@teambit/legacy.scope';\nimport { HashNotFound, OutdatedIndexJson, UnmergedComponents, RemoteLanes } from '@teambit/legacy.scope';\nimport type { IndexType, IndexItem } from './scope-index';\nimport { ScopeIndex } from './scope-index';\nimport BitObject from './object';\nimport type { ObjectItem } from './object-list';\nimport { ObjectList } from './object-list';\nimport BitRawObject from './raw-object';\nimport Ref from './ref';\nimport type { ContentTransformer } from './repository-hooks';\nimport { onPersist, onRead } from './repository-hooks';\nimport type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { getMaxSizeForObjects, createInMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { ScopeMeta, Lane, ModelComponent } from '../models';\n\nconst OBJECTS_BACKUP_DIR = `${OBJECTS_DIR}.bak`;\nconst TRASH_DIR = 'trash';\n\nexport default class Repository {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n objects: { [key: string]: BitObject } = {};\n objectsToRemove: Ref[] = [];\n scopeJson: ScopeJson;\n onRead: ContentTransformer;\n onPersist: ContentTransformer;\n scopePath: string;\n scopeIndex: ScopeIndex;\n protected cache: InMemoryCache<BitObject>;\n remoteLanes!: RemoteLanes;\n unmergedComponents!: UnmergedComponents;\n _persistMutex?: Mutex;\n constructor(scopePath: string, scopeJson: ScopeJson) {\n this.scopePath = scopePath;\n this.scopeJson = scopeJson;\n this.onRead = onRead(scopePath, scopeJson);\n this.onPersist = onPersist(scopePath, scopeJson);\n this.cache = createInMemoryCache({ maxSize: getMaxSizeForObjects() });\n }\n\n get persistMutex() {\n if (!this._persistMutex) {\n this._persistMutex = new Mutex();\n }\n return this._persistMutex;\n }\n\n static async load({ scopePath, scopeJson }: { scopePath: string; scopeJson: ScopeJson }): Promise<Repository> {\n const repository = new Repository(scopePath, scopeJson);\n await repository.init();\n return repository;\n }\n\n async init() {\n const scopeIndex = await this.loadOptionallyCreateScopeIndex();\n this.scopeIndex = scopeIndex;\n this.remoteLanes = new RemoteLanes(this.scopePath);\n this.unmergedComponents = await UnmergedComponents.load(this.scopePath);\n }\n\n static async create({ scopePath, scopeJson }: { scopePath: string; scopeJson: ScopeJson }): Promise<Repository> {\n const repository = new Repository(scopePath, scopeJson);\n const scopeIndex = ScopeIndex.create(scopePath);\n repository.scopeIndex = scopeIndex;\n repository.unmergedComponents = await UnmergedComponents.load(scopePath);\n repository.remoteLanes = new RemoteLanes(scopePath);\n return repository;\n }\n\n static reset(scopePath: string): Promise<void> {\n return ScopeIndex.reset(scopePath);\n }\n\n static getPathByScopePath(scopePath: string) {\n return path.join(scopePath, OBJECTS_DIR);\n }\n\n static onPostObjectsPersist: () => Promise<void>;\n\n async reLoadScopeIndex() {\n this.scopeIndex = await this.loadOptionallyCreateScopeIndex();\n }\n\n /**\n * current scope index difference with <scope_folder>/index.json content, reload it\n * @deprecated use Scope aspect `watchSystemFiles` instead, it's way more efficient.\n */\n public async reloadScopeIndexIfNeed(force = false) {\n const latestScopeIndex = await this.loadOptionallyCreateScopeIndex();\n if (force) {\n this.scopeIndex = latestScopeIndex;\n return;\n }\n\n const currentAllScopeIndexItems = this.scopeIndex.getAll();\n const latestAllScopeIndexItems = latestScopeIndex.getAll();\n\n if (currentAllScopeIndexItems.length !== latestAllScopeIndexItems.length) {\n this.scopeIndex = latestScopeIndex;\n return;\n }\n\n if (differenceWith(currentAllScopeIndexItems, latestAllScopeIndexItems, isEqual).length) {\n this.scopeIndex = latestScopeIndex;\n }\n }\n\n ensureDir() {\n return fs.ensureDir(this.getPath());\n }\n\n getPath() {\n return Repository.getPathByScopePath(this.scopePath);\n }\n\n getBackupPath(dirName?: string): string {\n const backupPath = path.join(this.scopePath, OBJECTS_BACKUP_DIR);\n return dirName ? path.join(backupPath, dirName) : backupPath;\n }\n\n getTrashDir() {\n return path.join(this.scopePath, TRASH_DIR);\n }\n\n getLicense(): Promise<string> {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return this.scopeJson.getPopulatedLicense();\n }\n\n async getScopeMetaObject(): Promise<ObjectItem> {\n const license = await this.getLicense();\n const object = ScopeMeta.fromObject({ license, name: this.scopeJson.name });\n return { ref: object.hash(), buffer: await object.compress() };\n }\n\n objectPath(ref: Ref): string {\n return path.join(this.getPath(), this.hashPath(ref));\n }\n\n async has(ref: Ref): Promise<boolean> {\n const objectPath = this.objectPath(ref);\n return fs.pathExists(objectPath);\n }\n\n async hasMultiple(refs: Ref[]): Promise<Ref[]> {\n const concurrency = concurrentIOLimit();\n const existingRefs = await pMapPool(\n refs,\n async (ref) => {\n const pathExists = await this.has(ref);\n return pathExists ? ref : null;\n },\n { concurrency }\n );\n return compact(existingRefs);\n }\n\n async load(ref: Ref, throws = false): Promise<BitObject> {\n // during tag, the updated objects are in `this.objects`.\n // `this.cache` is less reliable, because if it reaches its max, then it loads from the filesystem, which may not\n // be there yet (in case of \"version\" object), or may be out-of-date (in case of \"component\" object).\n const inMemoryObjects = this.objects[ref.hash.toString()];\n if (inMemoryObjects) return inMemoryObjects;\n if (ref.hash.length < HASH_SIZE) {\n ref = await this.getFullRefFromShortHash(ref);\n }\n const cached = this.getCache(ref);\n if (cached) {\n return cached;\n }\n let fileContentsRaw: Buffer;\n const objectPath = this.objectPath(ref);\n try {\n fileContentsRaw = await fs.readFile(objectPath);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n logger.error(`Failed reading a ref file ${objectPath}. Error: ${err.message}`);\n throw err;\n }\n logger.trace(`Failed finding a ref file ${objectPath}.`);\n if (throws) {\n // if we just `throw err` we loose the stack trace.\n // see https://stackoverflow.com/questions/68022123/no-stack-in-fs-promises-readfile-enoent-error\n const msg = `fatal: failed finding an object file ${objectPath} in the filesystem at ${err.path}`;\n throw Object.assign(err, { stack: new Error(msg).stack });\n }\n // @ts-ignore @todo: fix! it should return BitObject | null.\n return null;\n }\n const size = fileContentsRaw.byteLength;\n const fileContents = this.onRead(fileContentsRaw);\n // uncomment to debug the transformed objects by onRead\n // console.log('transformedContent load', ref.toString(), BitObject.parseSync(fileContents).getType());\n const parsedObject = await BitObject.parseObject(fileContents, objectPath);\n const maxSizeToCache = 100 * 1024; // 100KB\n if (size < maxSizeToCache) {\n // don't cache big files (mainly artifacts) to prevent out-of-memory\n this.setCache(parsedObject);\n }\n return parsedObject;\n }\n\n /**\n * this is restricted to provide objects according to the given types. Otherwise, big scopes (>1GB) could crush.\n * example usage: `this.list([ModelComponent, Symlink, Lane])`\n */\n async list(types: Types): Promise<BitObject[]> {\n const refs = await this.listRefs();\n const concurrency = concurrentIOLimit();\n logger.debug(\n `Repository.list, ${refs.length} refs are going to be loaded, searching for types: ${types.map((t) => t.name).join(', ')}`\n );\n const objects: BitObject[] = [];\n const loadGracefully = process.argv.includes('--never-exported');\n const isTypeIncluded = (obj: BitObject) => types.some((type) => type.name === obj.constructor.name); // avoid using \"obj instanceof type\" for Harmony to call this function successfully\n await pMapPool(\n refs,\n async (ref) => {\n const object = loadGracefully\n ? await this.loadRefDeleteIfInvalid(ref)\n : await this.loadRefOnlyIfType(ref, types);\n if (!object) return;\n if (loadGracefully && !isTypeIncluded(object)) return;\n objects.push(object);\n },\n {\n concurrency,\n onCompletedChunk: (completed) => {\n if (completed % 1000 === 0) logger.debug(`Repository.list, completed ${completed} out of ${refs.length}`);\n },\n }\n );\n return objects;\n }\n\n async loadRefDeleteIfInvalid(ref: Ref) {\n try {\n return await this.load(ref, true);\n } catch (err: any) {\n // this is needed temporarily to allow `bit reset --never-exported` to fix the bit-id-comp-id error.\n // in a few months, we can remove this condition (around min 2024)\n if (err.constructor.name === 'BitIdCompIdError' || err.constructor.name === 'MissingScope') {\n logger.debug(`bit-id-comp-id error, moving an object to trash ${ref.toString()}`);\n await this.moveOneObjectToTrash(ref);\n return undefined;\n }\n throw err;\n }\n }\n\n async loadRefOnlyIfType(ref: Ref, types: Types): Promise<BitObject | null> {\n const objectPath = this.objectPath(ref);\n const fileContentsRaw = await fs.readFile(objectPath);\n const fileContents = this.onRead(fileContentsRaw);\n const typeNames = types.map((type) => type.name);\n const parsedObject = await BitObject.parseObjectOnlyIfType(fileContents, typeNames, objectPath);\n return parsedObject;\n }\n\n async listRefs(cwd = this.getPath()): Promise<Array<Ref>> {\n const matches = await glob(path.join('*', '*'), { cwd });\n const refs = matches.map((str) => {\n const hash = str.replace(path.sep, '');\n if (!isSnap(hash)) {\n logger.error(`fatal: the file \"${str}\" is not a valid bit object path`);\n return null;\n }\n return new Ref(hash);\n });\n return compact(refs);\n }\n\n async listRefsStartWith(shortHash: Ref): Promise<Array<Ref>> {\n const pathPrefix = this.hashPath(shortHash);\n const matches = await glob(`${pathPrefix}*`, { cwd: this.getPath() });\n const refs = matches.map((str) => {\n const hash = str.replace(path.sep, '');\n if (!isSnap(hash)) {\n logger.error(`fatal: the file \"${str}\" is not a valid bit object path`);\n return null;\n }\n return new Ref(hash);\n });\n return compact(refs);\n }\n\n async listRawObjects(): Promise<any> {\n const refs = await this.listRefs();\n const concurrency = concurrentIOLimit();\n return pMapPool(\n refs,\n async (ref) => {\n try {\n const buffer = await this.loadRaw(ref);\n const bitRawObject = await BitRawObject.fromDeflatedBuffer(buffer, ref.hash);\n return bitRawObject;\n } catch {\n logger.error(`Couldn't load the ref ${ref} this object is probably corrupted and should be delete`);\n return null;\n }\n },\n { concurrency }\n );\n }\n\n async listObjectsFromIndex(indexType: IndexType, filter?: Function): Promise<BitObject[]> {\n const hashes = filter ? this.scopeIndex.getHashesByQuery(indexType, filter) : this.scopeIndex.getHashes(indexType);\n return this._getBitObjectsByHashes(hashes);\n }\n\n getHashFromIndex(indexType: IndexType, filter: Function): string | null {\n const hashes = this.scopeIndex.getHashesByQuery(indexType, filter);\n if (hashes.length > 2) throw new Error('getHashFromIndex expect to get zero or one result');\n return hashes.length ? hashes[0] : null;\n }\n\n async _getBitObjectsByHashes(hashes: string[]): Promise<BitObject[]> {\n const missingIndexItems: IndexItem[] = [];\n const bitObjects = await Promise.all(\n hashes.map(async (hash) => {\n const bitObject = await this.load(new Ref(hash));\n if (!bitObject) {\n const indexItem = this.scopeIndex.find(hash);\n if (!indexItem) throw new Error(`_getBitObjectsByHashes failed finding ${hash}`);\n missingIndexItems.push(indexItem);\n return;\n }\n return bitObject;\n })\n );\n if (missingIndexItems.length) {\n this.scopeIndex.removeMany(missingIndexItems.map((item) => new Ref(item.hash)));\n await this.scopeIndex.write();\n const missingStringified = missingIndexItems.map((item) => item.toIdentifierString());\n throw new OutdatedIndexJson(missingStringified);\n }\n return compact(bitObjects);\n }\n\n async loadOptionallyCreateScopeIndex(): Promise<ScopeIndex> {\n try {\n const scopeIndex = await ScopeIndex.load(this.scopePath);\n return scopeIndex;\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n const bitObjects: BitObject[] = await this.list([ModelComponent, Lane]);\n const scopeIndex = ScopeIndex.create(this.scopePath);\n const added = scopeIndex.addMany(bitObjects);\n if (added) await scopeIndex.write();\n return scopeIndex;\n }\n throw err;\n }\n }\n\n async loadRaw(ref: Ref): Promise<Buffer> {\n if (ref.hash.length < HASH_SIZE) {\n ref = await this.getFullRefFromShortHash(ref);\n }\n const raw = await fs.readFile(this.objectPath(ref));\n // Run hook to transform content pre reading\n const transformedContent = this.onRead(raw);\n // uncomment to debug the transformed objects by onRead\n // console.log('transformedContent loadRaw', ref.toString(), BitObject.parseSync(transformedContent).getType());\n return transformedContent;\n }\n\n async getFullRefFromShortHash(ref: Ref): Promise<Ref> {\n const refs = await this.listRefsStartWith(ref);\n if (refs.length > 1) {\n throw new Error(\n `found ${refs.length} objects with the same short hash ${ref.toString()}, please use longer hash`\n );\n }\n if (refs.length === 0) {\n throw new Error(`failed finding an object with the short hash ${ref.toString()}`);\n }\n return refs[0];\n }\n\n async loadManyRaw(refs: Ref[]): Promise<ObjectItem[]> {\n const concurrency = concurrentIOLimit();\n const uniqRefs = uniqBy(refs, 'hash');\n return pMapPool(uniqRefs, async (ref) => ({ ref, buffer: await this.loadRaw(ref) }), { concurrency });\n }\n\n async loadManyRawIgnoreMissing(refs: Ref[]): Promise<ObjectItem[]> {\n const concurrency = concurrentIOLimit();\n const results = await pMapPool(\n refs,\n async (ref) => {\n try {\n const buffer = await this.loadRaw(ref);\n return { ref, buffer };\n } catch (err: any) {\n if (err.code === 'ENOENT') return null;\n throw err;\n }\n },\n { concurrency }\n );\n return compact(results);\n }\n\n async loadRawObject(ref: Ref): Promise<BitRawObject> {\n const buffer = await this.loadRaw(ref);\n const bitRawObject = await BitRawObject.fromDeflatedBuffer(buffer, ref.hash);\n return bitRawObject as any as BitRawObject;\n }\n\n /**\n * prefer using `this.load()` for an async version, which also writes to the cache\n */\n loadSync(ref: Ref, throws = true): BitObject {\n try {\n const objectFile = fs.readFileSync(this.objectPath(ref));\n // Run hook to transform content pre reading\n const transformedContent = this.onRead(objectFile);\n return BitObject.parseSync(transformedContent);\n } catch {\n if (throws) {\n throw new HashNotFound(ref.toString());\n }\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return null;\n }\n }\n\n setCache(object: BitObject) {\n this.cache.set(object.hash().toString(), object);\n return this;\n }\n\n getCache(ref: Ref): BitObject | undefined {\n return this.cache.get(ref.toString());\n }\n\n removeFromCache(ref: Ref) {\n this.cache.delete(ref.toString());\n }\n\n async clearCache() {\n logger.debug('repository.clearCache');\n this.cache.deleteAll();\n await this.init();\n }\n clearObjectsFromCache() {\n logger.debug('repository.clearObjectsFromCache');\n this.cache.deleteAll();\n }\n\n backup(dirName?: string) {\n const backupDir = this.getBackupPath(dirName);\n const objectsDir = this.getPath();\n logger.debug(`making a backup of all objects from ${objectsDir} to ${backupDir}`);\n fs.emptyDirSync(backupDir);\n fs.copySync(objectsDir, backupDir);\n }\n\n add(object: BitObject | null | undefined): Repository {\n // console.trace(`repository: adding object ${object?.hash().toString()}`);\n if (!object) return this;\n // leave the following commented log message, it is very useful for debugging but too verbose when not needed.\n // logger.debug(`repository: adding object ${object.hash().toString()} which consist of the following id: ${object.id()}`);\n this.objects[object.hash().toString()] = object;\n this.setCache(object);\n return this;\n }\n\n addMany(objects: BitObject[]): Repository {\n if (!objects || !objects.length) return this;\n objects.forEach((obj) => this.add(obj));\n return this;\n }\n\n removeObject(ref: Ref) {\n this.objectsToRemove.push(ref);\n }\n\n removeManyObjects(refs: Ref[]) {\n if (!refs || !refs.length) return;\n refs.forEach((ref) => this.removeObject(ref));\n }\n\n findMany(refs: Ref[]): Promise<BitObject[]> {\n return Promise.all(refs.map((ref) => this.load(ref)));\n }\n\n /**\n * important! use this method only for commands that are non running on an http server.\n *\n * it's better to remove/delete objects directly and not using the `objects` member.\n * it helps to avoid multiple processes running concurrently on an http server.\n *\n * persist objects changes (added and removed) into the filesystem\n * do not call this function multiple times in parallel, otherwise, it'll damage the index.json file.\n * call this function only once after you added and removed all applicable objects.\n */\n async persist(validate = true): Promise<void> {\n // do not let two requests enter this critical area, otherwise, refs/index.json/objects could\n // be corrupted\n logger.debug(`Repository.persist, going to acquire a lock`);\n await this.persistMutex.runExclusive(async () => {\n logger.debug(`Repository.persist, validate = ${validate.toString()}, a lock has been acquired`);\n await this.deleteObjectsFromFS(this.objectsToRemove);\n this.validateObjects(validate, Object.values(this.objects));\n await this.writeObjectsToTheFS(Object.values(this.objects));\n await this.writeRemoteLanes();\n await this.unmergedComponents.write();\n });\n logger.debug(`Repository.persist, completed. the lock has been released`);\n this.clearObjects();\n if (Repository.onPostObjectsPersist) {\n Repository.onPostObjectsPersist().catch((err) => {\n logger.error('fatal: onPostObjectsPersist encountered an error (this error does not stop the process)', err);\n });\n }\n }\n\n async writeRemoteLanes() {\n await this.remoteLanes.write();\n }\n\n /**\n * this is especially critical for http server, where one process lives long and serves multiple\n * exports. without this, the objects get accumulated over time and being rewritten over and over\n * again.\n */\n private clearObjects() {\n this.objects = {};\n this.objectsToRemove = [];\n }\n\n /**\n * normally, the validation step takes place just before the acutal writing of the file.\n * however, this can be an issue where a component has an invalid version. the component could\n * be saved before validating the version (see #1727). that's why we validate here before writing\n * anything to the filesystem.\n * the open question here is whether should we validate again before the actual writing or it\n * should be enough to validate here?\n * for now, it does validate again before saving, only to be 100% sure nothing happens in a few\n * lines of code until the actual writing. however, if the performance penalty is noticeable, we\n * can easily revert it by changing `bitObject.validateBeforePersist = false` line run regardless\n * the `validate` argument.\n */\n validateObjects(validate: boolean, objects: BitObject[]) {\n objects.forEach((bitObject) => {\n // @ts-ignore some BitObject classes have validate() method\n if (validate && bitObject.validate) {\n // @ts-ignore\n bitObject.validate();\n }\n if (!validate) {\n bitObject.validateBeforePersist = false;\n }\n });\n }\n\n async deleteObjectsFromFS(refs: Ref[]): Promise<void> {\n if (!refs.length) return;\n const uniqRefs = uniqBy(refs, 'hash');\n logger.debug(`Repository._deleteMany: deleting ${uniqRefs.length} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(uniqRefs, (ref) => this._deleteOne(ref), { concurrency });\n const removed = this.scopeIndex.removeMany(uniqRefs);\n if (removed) await this.scopeIndex.write();\n }\n\n async moveObjectsToDir(refs: Ref[], dir: string): Promise<void> {\n if (!refs.length) return;\n const uniqRefs = uniqBy(refs, 'hash');\n logger.debug(`Repository.moveObjectsToDir: ${uniqRefs.length} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(uniqRefs, (ref) => this.moveOneObjectToDir(ref, dir), { concurrency });\n const removed = this.scopeIndex.removeMany(uniqRefs);\n if (removed) await this.scopeIndex.write();\n }\n\n async moveObjectsToTrash(refs: Ref[]): Promise<void> {\n await this.moveObjectsToDir(refs, TRASH_DIR);\n }\n\n async listTrash(): Promise<Ref[]> {\n return this.listRefs(this.getTrashDir());\n }\n\n async getFromTrash(refs: Ref[]): Promise<BitObject[]> {\n const objectsFromTrash = await Promise.all(\n refs.map(async (ref) => {\n const trashObjPath = path.join(this.getTrashDir(), this.hashPath(ref));\n let buffer: Buffer;\n try {\n buffer = await fs.readFile(trashObjPath);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new BitError(`unable to find the object ${ref.toString()} in the trash`);\n }\n throw err;\n }\n return BitObject.parseObject(buffer, trashObjPath);\n })\n );\n return objectsFromTrash;\n }\n\n async restoreFromTrash(refs: Ref[]) {\n logger.debug(`Repository.restoreFromTrash: ${refs.length} objects`);\n const objectsFromTrash = await this.getFromTrash(refs);\n await this.writeObjectsToTheFS(objectsFromTrash);\n }\n\n async restoreFromDir(dir: string, overwrite = false) {\n await fs.copy(path.join(this.scopePath, dir), this.getPath(), { overwrite });\n }\n\n private async moveOneObjectToDir(ref: Ref, dir: string) {\n const currentPath = this.objectPath(ref);\n const absDir = path.join(this.scopePath, dir);\n const fullPath = path.join(absDir, this.hashPath(ref));\n await fs.move(currentPath, fullPath, { overwrite: true });\n this.removeFromCache(ref);\n }\n\n private async moveOneObjectToTrash(ref: Ref) {\n await this.moveOneObjectToDir(ref, TRASH_DIR);\n }\n\n async deleteRecordsFromUnmergedComponents(compIds: ComponentID[]) {\n this.unmergedComponents.removeMultipleComponents(compIds);\n await this.unmergedComponents.write();\n }\n\n /**\n * write all objects to the FS and index the components/lanes/symlink objects\n */\n async writeObjectsToTheFS(objects: BitObject[]): Promise<void> {\n const count = objects.length;\n if (!count) return;\n logger.trace(`Repository.writeObjectsToTheFS: started writing ${count} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(objects, (obj) => this._writeOne(obj), {\n concurrency,\n });\n logger.trace(`Repository.writeObjectsToTheFS: completed writing ${count} objects`);\n\n const added = this.scopeIndex.addMany(objects);\n if (added) await this.scopeIndex.write();\n }\n\n /**\n * do not call this method directly. always call this.removeObject() and once done with all objects,\n * call this.persist()\n */\n _deleteOne(ref: Ref): Promise<boolean> {\n this.removeFromCache(ref);\n const pathToDelete = this.objectPath(ref);\n logger.trace(`repository._deleteOne: deleting ${pathToDelete}`);\n return removeFile(pathToDelete, true);\n }\n\n /**\n * always prefer this.persist() or this.writeObjectsToTheFS()\n * this method doesn't write to scopeIndex. so using this method for ModelComponent or\n * Symlink makes the index outdated.\n */\n async _writeOne(object: BitObject): Promise<boolean> {\n const contents = await object.compress();\n const options: ChownOptions = {};\n if (this.scopeJson.groupName) options.gid = await resolveGroupId(this.scopeJson.groupName);\n const hash = object.hash();\n if (this.cache.has(hash.toString())) this.cache.set(hash.toString(), object); // update the cache\n const objectPath = this.objectPath(hash);\n logger.trace(`repository._writeOne: ${objectPath}`);\n // Run hook to transform content pre persisting\n const transformedContent = this.onPersist(contents);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return writeFile(objectPath, transformedContent, options);\n }\n\n async writeObjectsToPendingDir(objectList: ObjectList, pendingDir: PathOsBasedAbsolute) {\n const options: ChownOptions = {};\n if (this.scopeJson.groupName) options.gid = await resolveGroupId(this.scopeJson.groupName);\n await Promise.all(\n objectList.objects.map(async (object) => {\n const objPath = path.join(pendingDir, this.hashPath(object.ref));\n await writeFile(objPath, object.buffer, options);\n })\n );\n }\n\n async readObjectsFromPendingDir(pendingDir: PathOsBasedAbsolute) {\n const refs = await this.listRefs(pendingDir);\n const objects = await Promise.all(\n refs.map(async (ref) => {\n const buffer = await fs.readFile(path.join(pendingDir, this.hashPath(ref)));\n return { ref, buffer };\n })\n );\n return new ObjectList(objects);\n }\n\n private hashPath(ref: Ref) {\n const hash = ref.toString();\n return path.join(hash.slice(0, 2), hash.slice(2));\n }\n}\n\nasync function removeFile(filePath: string, propagateDirs = false): Promise<boolean> {\n try {\n await fs.unlink(filePath);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n // the file doesn't exist, that's fine, no need to do anything\n return false;\n }\n throw err;\n }\n if (!propagateDirs) return true;\n const { dir } = path.parse(filePath);\n await removeEmptyDir(dir);\n return true;\n}\n\nfunction resolveGroupId(groupName: string): Promise<number | null | undefined> {\n return new Promise((resolve, reject) => {\n uidNumber(null, groupName, (err, uid, gid) => {\n if (err) {\n logger.error('resolveGroupId', err);\n if (err.message.includes('EPERM')) {\n return reject(\n new BitError(\n `unable to resolve group id of \"${groupName}\", current user does not have sufficient permissions`\n )\n );\n }\n if (err.message.includes('group id does not exist')) {\n return reject(new BitError(`unable to resolve group id of \"${groupName}\", the group does not exist`));\n }\n return reject(new BitError(`unable to resolve group id of \"${groupName}\", got an error ${err.message}`));\n }\n // on Windows it'll always be null\n return resolve(gid);\n });\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_uidNumber","_asyncMutex","_lodash","_bitError","_componentVersion","path","_interopRequireWildcard","_toolboxPromise","_legacy","_legacy2","_legacy3","_toolboxFs","_harmonyModules","_legacy4","_scopeIndex","_object","_objectList","_rawObject","_ref","_repositoryHooks","_harmonyModules2","_models","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","OBJECTS_BACKUP_DIR","OBJECTS_DIR","TRASH_DIR","Repository","constructor","scopePath","scopeJson","onRead","onPersist","cache","createInMemoryCache","maxSize","getMaxSizeForObjects","persistMutex","_persistMutex","Mutex","load","repository","init","scopeIndex","loadOptionallyCreateScopeIndex","remoteLanes","RemoteLanes","unmergedComponents","UnmergedComponents","create","ScopeIndex","reset","getPathByScopePath","join","reLoadScopeIndex","reloadScopeIndexIfNeed","force","latestScopeIndex","currentAllScopeIndexItems","getAll","latestAllScopeIndexItems","length","differenceWith","isEqual","ensureDir","fs","getPath","getBackupPath","dirName","backupPath","getTrashDir","getLicense","getPopulatedLicense","getScopeMetaObject","license","object","ScopeMeta","fromObject","name","ref","hash","buffer","compress","objectPath","hashPath","pathExists","hasMultiple","refs","concurrency","concurrentIOLimit","existingRefs","pMapPool","compact","throws","inMemoryObjects","objects","toString","HASH_SIZE","getFullRefFromShortHash","cached","getCache","fileContentsRaw","readFile","err","code","logger","error","message","trace","msg","assign","stack","Error","size","byteLength","fileContents","parsedObject","BitObject","parseObject","maxSizeToCache","setCache","list","types","listRefs","debug","map","loadGracefully","process","argv","includes","isTypeIncluded","obj","some","type","loadRefDeleteIfInvalid","loadRefOnlyIfType","push","onCompletedChunk","completed","moveOneObjectToTrash","undefined","typeNames","parseObjectOnlyIfType","cwd","matches","glob","str","replace","sep","isSnap","Ref","listRefsStartWith","shortHash","pathPrefix","listRawObjects","loadRaw","bitRawObject","BitRawObject","fromDeflatedBuffer","listObjectsFromIndex","indexType","filter","hashes","getHashesByQuery","getHashes","_getBitObjectsByHashes","getHashFromIndex","missingIndexItems","bitObjects","Promise","all","bitObject","indexItem","find","removeMany","item","write","missingStringified","toIdentifierString","OutdatedIndexJson","ModelComponent","Lane","added","addMany","raw","transformedContent","loadManyRaw","uniqRefs","uniqBy","loadManyRawIgnoreMissing","results","loadRawObject","loadSync","objectFile","readFileSync","parseSync","HashNotFound","removeFromCache","delete","clearCache","deleteAll","clearObjectsFromCache","backup","backupDir","objectsDir","emptyDirSync","copySync","add","forEach","removeObject","objectsToRemove","removeManyObjects","findMany","persist","validate","runExclusive","deleteObjectsFromFS","validateObjects","values","writeObjectsToTheFS","writeRemoteLanes","clearObjects","onPostObjectsPersist","catch","validateBeforePersist","_deleteOne","removed","moveObjectsToDir","dir","moveOneObjectToDir","moveObjectsToTrash","listTrash","getFromTrash","objectsFromTrash","trashObjPath","BitError","restoreFromTrash","restoreFromDir","overwrite","copy","currentPath","absDir","fullPath","move","deleteRecordsFromUnmergedComponents","compIds","removeMultipleComponents","count","_writeOne","pathToDelete","removeFile","contents","options","groupName","gid","resolveGroupId","writeFile","writeObjectsToPendingDir","objectList","pendingDir","objPath","readObjectsFromPendingDir","ObjectList","slice","exports","filePath","propagateDirs","unlink","parse","removeEmptyDir","resolve","reject","uidNumber","uid"],"sources":["repository.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport uidNumber from 'uid-number';\nimport { Mutex } from 'async-mutex';\nimport { compact, uniqBy, differenceWith, isEqual } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport type { ComponentID } from '@teambit/component-id';\nimport { HASH_SIZE, isSnap } from '@teambit/component-version';\nimport * as path from 'path';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { OBJECTS_DIR } from '@teambit/legacy.constants';\nimport { logger } from '@teambit/legacy.logger';\nimport type { ChownOptions, PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { glob, writeFile } from '@teambit/legacy.utils';\nimport { removeEmptyDir } from '@teambit/toolbox.fs.remove-empty-dir';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport type { Types, ScopeJson } from '@teambit/legacy.scope';\nimport { HashNotFound, OutdatedIndexJson, UnmergedComponents, RemoteLanes } from '@teambit/legacy.scope';\nimport type { IndexType, IndexItem } from './scope-index';\nimport { ScopeIndex } from './scope-index';\nimport BitObject from './object';\nimport type { ObjectItem } from './object-list';\nimport { ObjectList } from './object-list';\nimport BitRawObject from './raw-object';\nimport Ref from './ref';\nimport type { ContentTransformer } from './repository-hooks';\nimport { onPersist, onRead } from './repository-hooks';\nimport type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { getMaxSizeForObjects, createInMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { ScopeMeta, Lane, ModelComponent } from '../models';\n\nconst OBJECTS_BACKUP_DIR = `${OBJECTS_DIR}.bak`;\nconst TRASH_DIR = 'trash';\n\nexport default class Repository {\n objects: { [key: string]: BitObject } = {};\n objectsToRemove: Ref[] = [];\n scopeJson: ScopeJson;\n onRead: ContentTransformer;\n onPersist: ContentTransformer;\n scopePath: string;\n scopeIndex: ScopeIndex;\n protected cache: InMemoryCache<BitObject>;\n remoteLanes!: RemoteLanes;\n unmergedComponents!: UnmergedComponents;\n _persistMutex?: Mutex;\n constructor(scopePath: string, scopeJson: ScopeJson) {\n this.scopePath = scopePath;\n this.scopeJson = scopeJson;\n this.onRead = onRead(scopePath, scopeJson);\n this.onPersist = onPersist(scopePath, scopeJson);\n this.cache = createInMemoryCache({ maxSize: getMaxSizeForObjects() });\n }\n\n get persistMutex() {\n if (!this._persistMutex) {\n this._persistMutex = new Mutex();\n }\n return this._persistMutex;\n }\n\n static async load({ scopePath, scopeJson }: { scopePath: string; scopeJson: ScopeJson }): Promise<Repository> {\n const repository = new Repository(scopePath, scopeJson);\n await repository.init();\n return repository;\n }\n\n async init() {\n const scopeIndex = await this.loadOptionallyCreateScopeIndex();\n this.scopeIndex = scopeIndex;\n this.remoteLanes = new RemoteLanes(this.scopePath);\n this.unmergedComponents = await UnmergedComponents.load(this.scopePath);\n }\n\n static async create({ scopePath, scopeJson }: { scopePath: string; scopeJson: ScopeJson }): Promise<Repository> {\n const repository = new Repository(scopePath, scopeJson);\n const scopeIndex = ScopeIndex.create(scopePath);\n repository.scopeIndex = scopeIndex;\n repository.unmergedComponents = await UnmergedComponents.load(scopePath);\n repository.remoteLanes = new RemoteLanes(scopePath);\n return repository;\n }\n\n static reset(scopePath: string): Promise<void> {\n return ScopeIndex.reset(scopePath);\n }\n\n static getPathByScopePath(scopePath: string) {\n return path.join(scopePath, OBJECTS_DIR);\n }\n\n static onPostObjectsPersist: () => Promise<void>;\n\n async reLoadScopeIndex() {\n this.scopeIndex = await this.loadOptionallyCreateScopeIndex();\n }\n\n /**\n * current scope index difference with <scope_folder>/index.json content, reload it\n * @deprecated use Scope aspect `watchSystemFiles` instead, it's way more efficient.\n */\n public async reloadScopeIndexIfNeed(force = false) {\n const latestScopeIndex = await this.loadOptionallyCreateScopeIndex();\n if (force) {\n this.scopeIndex = latestScopeIndex;\n return;\n }\n\n const currentAllScopeIndexItems = this.scopeIndex.getAll();\n const latestAllScopeIndexItems = latestScopeIndex.getAll();\n\n if (currentAllScopeIndexItems.length !== latestAllScopeIndexItems.length) {\n this.scopeIndex = latestScopeIndex;\n return;\n }\n\n if (differenceWith(currentAllScopeIndexItems, latestAllScopeIndexItems, isEqual).length) {\n this.scopeIndex = latestScopeIndex;\n }\n }\n\n ensureDir() {\n return fs.ensureDir(this.getPath());\n }\n\n getPath() {\n return Repository.getPathByScopePath(this.scopePath);\n }\n\n getBackupPath(dirName?: string): string {\n const backupPath = path.join(this.scopePath, OBJECTS_BACKUP_DIR);\n return dirName ? path.join(backupPath, dirName) : backupPath;\n }\n\n getTrashDir() {\n return path.join(this.scopePath, TRASH_DIR);\n }\n\n getLicense(): Promise<string> {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return this.scopeJson.getPopulatedLicense();\n }\n\n async getScopeMetaObject(): Promise<ObjectItem> {\n const license = await this.getLicense();\n const object = ScopeMeta.fromObject({ license, name: this.scopeJson.name });\n return { ref: object.hash(), buffer: await object.compress() };\n }\n\n objectPath(ref: Ref): string {\n return path.join(this.getPath(), this.hashPath(ref));\n }\n\n async has(ref: Ref): Promise<boolean> {\n const objectPath = this.objectPath(ref);\n return fs.pathExists(objectPath);\n }\n\n async hasMultiple(refs: Ref[]): Promise<Ref[]> {\n const concurrency = concurrentIOLimit();\n const existingRefs = await pMapPool(\n refs,\n async (ref) => {\n const pathExists = await this.has(ref);\n return pathExists ? ref : null;\n },\n { concurrency }\n );\n return compact(existingRefs);\n }\n\n async load(ref: Ref, throws = false): Promise<BitObject> {\n // during tag, the updated objects are in `this.objects`.\n // `this.cache` is less reliable, because if it reaches its max, then it loads from the filesystem, which may not\n // be there yet (in case of \"version\" object), or may be out-of-date (in case of \"component\" object).\n const inMemoryObjects = this.objects[ref.hash.toString()];\n if (inMemoryObjects) return inMemoryObjects;\n if (ref.hash.length < HASH_SIZE) {\n ref = await this.getFullRefFromShortHash(ref);\n }\n const cached = this.getCache(ref);\n if (cached) {\n return cached;\n }\n let fileContentsRaw: Buffer;\n const objectPath = this.objectPath(ref);\n try {\n fileContentsRaw = await fs.readFile(objectPath);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n logger.error(`Failed reading a ref file ${objectPath}. Error: ${err.message}`);\n throw err;\n }\n logger.trace(`Failed finding a ref file ${objectPath}.`);\n if (throws) {\n // if we just `throw err` we loose the stack trace.\n // see https://stackoverflow.com/questions/68022123/no-stack-in-fs-promises-readfile-enoent-error\n const msg = `fatal: failed finding an object file ${objectPath} in the filesystem at ${err.path}`;\n throw Object.assign(err, { stack: new Error(msg).stack });\n }\n // @ts-ignore @todo: fix! it should return BitObject | null.\n return null;\n }\n const size = fileContentsRaw.byteLength;\n const fileContents = this.onRead(fileContentsRaw);\n // uncomment to debug the transformed objects by onRead\n // console.log('transformedContent load', ref.toString(), BitObject.parseSync(fileContents).getType());\n const parsedObject = await BitObject.parseObject(fileContents, objectPath);\n const maxSizeToCache = 100 * 1024; // 100KB\n if (size < maxSizeToCache) {\n // don't cache big files (mainly artifacts) to prevent out-of-memory\n this.setCache(parsedObject);\n }\n return parsedObject;\n }\n\n /**\n * this is restricted to provide objects according to the given types. Otherwise, big scopes (>1GB) could crush.\n * example usage: `this.list([ModelComponent, Symlink, Lane])`\n */\n async list(types: Types): Promise<BitObject[]> {\n const refs = await this.listRefs();\n const concurrency = concurrentIOLimit();\n logger.debug(\n `Repository.list, ${refs.length} refs are going to be loaded, searching for types: ${types.map((t) => t.name).join(', ')}`\n );\n const objects: BitObject[] = [];\n const loadGracefully = process.argv.includes('--never-exported');\n const isTypeIncluded = (obj: BitObject) => types.some((type) => type.name === obj.constructor.name); // avoid using \"obj instanceof type\" for Harmony to call this function successfully\n await pMapPool(\n refs,\n async (ref) => {\n const object = loadGracefully\n ? await this.loadRefDeleteIfInvalid(ref)\n : await this.loadRefOnlyIfType(ref, types);\n if (!object) return;\n if (loadGracefully && !isTypeIncluded(object)) return;\n objects.push(object);\n },\n {\n concurrency,\n onCompletedChunk: (completed) => {\n if (completed % 1000 === 0) logger.debug(`Repository.list, completed ${completed} out of ${refs.length}`);\n },\n }\n );\n return objects;\n }\n\n async loadRefDeleteIfInvalid(ref: Ref) {\n try {\n return await this.load(ref, true);\n } catch (err: any) {\n // this is needed temporarily to allow `bit reset --never-exported` to fix the bit-id-comp-id error.\n // in a few months, we can remove this condition (around min 2024)\n if (err.constructor.name === 'BitIdCompIdError' || err.constructor.name === 'MissingScope') {\n logger.debug(`bit-id-comp-id error, moving an object to trash ${ref.toString()}`);\n await this.moveOneObjectToTrash(ref);\n return undefined;\n }\n throw err;\n }\n }\n\n async loadRefOnlyIfType(ref: Ref, types: Types): Promise<BitObject | null> {\n const objectPath = this.objectPath(ref);\n const fileContentsRaw = await fs.readFile(objectPath);\n const fileContents = this.onRead(fileContentsRaw);\n const typeNames = types.map((type) => type.name);\n const parsedObject = await BitObject.parseObjectOnlyIfType(fileContents, typeNames, objectPath);\n return parsedObject;\n }\n\n async listRefs(cwd = this.getPath()): Promise<Array<Ref>> {\n const matches = await glob(path.join('*', '*'), { cwd });\n const refs = matches.map((str) => {\n const hash = str.replace(path.sep, '');\n if (!isSnap(hash)) {\n logger.error(`fatal: the file \"${str}\" is not a valid bit object path`);\n return null;\n }\n return new Ref(hash);\n });\n return compact(refs);\n }\n\n async listRefsStartWith(shortHash: Ref): Promise<Array<Ref>> {\n const pathPrefix = this.hashPath(shortHash);\n const matches = await glob(`${pathPrefix}*`, { cwd: this.getPath() });\n const refs = matches.map((str) => {\n const hash = str.replace(path.sep, '');\n if (!isSnap(hash)) {\n logger.error(`fatal: the file \"${str}\" is not a valid bit object path`);\n return null;\n }\n return new Ref(hash);\n });\n return compact(refs);\n }\n\n async listRawObjects(): Promise<any> {\n const refs = await this.listRefs();\n const concurrency = concurrentIOLimit();\n return pMapPool(\n refs,\n async (ref) => {\n try {\n const buffer = await this.loadRaw(ref);\n const bitRawObject = await BitRawObject.fromDeflatedBuffer(buffer, ref.hash);\n return bitRawObject;\n } catch {\n logger.error(`Couldn't load the ref ${ref} this object is probably corrupted and should be delete`);\n return null;\n }\n },\n { concurrency }\n );\n }\n\n async listObjectsFromIndex(indexType: IndexType, filter?: Function): Promise<BitObject[]> {\n const hashes = filter ? this.scopeIndex.getHashesByQuery(indexType, filter) : this.scopeIndex.getHashes(indexType);\n return this._getBitObjectsByHashes(hashes);\n }\n\n getHashFromIndex(indexType: IndexType, filter: Function): string | null {\n const hashes = this.scopeIndex.getHashesByQuery(indexType, filter);\n if (hashes.length > 2) throw new Error('getHashFromIndex expect to get zero or one result');\n return hashes.length ? hashes[0] : null;\n }\n\n async _getBitObjectsByHashes(hashes: string[]): Promise<BitObject[]> {\n const missingIndexItems: IndexItem[] = [];\n const bitObjects = await Promise.all(\n hashes.map(async (hash) => {\n const bitObject = await this.load(new Ref(hash));\n if (!bitObject) {\n const indexItem = this.scopeIndex.find(hash);\n if (!indexItem) throw new Error(`_getBitObjectsByHashes failed finding ${hash}`);\n missingIndexItems.push(indexItem);\n return;\n }\n return bitObject;\n })\n );\n if (missingIndexItems.length) {\n this.scopeIndex.removeMany(missingIndexItems.map((item) => new Ref(item.hash)));\n await this.scopeIndex.write();\n const missingStringified = missingIndexItems.map((item) => item.toIdentifierString());\n throw new OutdatedIndexJson(missingStringified);\n }\n return compact(bitObjects);\n }\n\n async loadOptionallyCreateScopeIndex(): Promise<ScopeIndex> {\n try {\n const scopeIndex = await ScopeIndex.load(this.scopePath);\n return scopeIndex;\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n const bitObjects: BitObject[] = await this.list([ModelComponent, Lane]);\n const scopeIndex = ScopeIndex.create(this.scopePath);\n const added = scopeIndex.addMany(bitObjects);\n if (added) await scopeIndex.write();\n return scopeIndex;\n }\n throw err;\n }\n }\n\n async loadRaw(ref: Ref): Promise<Buffer> {\n if (ref.hash.length < HASH_SIZE) {\n ref = await this.getFullRefFromShortHash(ref);\n }\n const raw = await fs.readFile(this.objectPath(ref));\n // Run hook to transform content pre reading\n const transformedContent = this.onRead(raw);\n // uncomment to debug the transformed objects by onRead\n // console.log('transformedContent loadRaw', ref.toString(), BitObject.parseSync(transformedContent).getType());\n return transformedContent;\n }\n\n async getFullRefFromShortHash(ref: Ref): Promise<Ref> {\n const refs = await this.listRefsStartWith(ref);\n if (refs.length > 1) {\n throw new Error(\n `found ${refs.length} objects with the same short hash ${ref.toString()}, please use longer hash`\n );\n }\n if (refs.length === 0) {\n throw new Error(`failed finding an object with the short hash ${ref.toString()}`);\n }\n return refs[0];\n }\n\n async loadManyRaw(refs: Ref[]): Promise<ObjectItem[]> {\n const concurrency = concurrentIOLimit();\n const uniqRefs = uniqBy(refs, 'hash');\n return pMapPool(uniqRefs, async (ref) => ({ ref, buffer: await this.loadRaw(ref) }), { concurrency });\n }\n\n async loadManyRawIgnoreMissing(refs: Ref[]): Promise<ObjectItem[]> {\n const concurrency = concurrentIOLimit();\n const results = await pMapPool(\n refs,\n async (ref) => {\n try {\n const buffer = await this.loadRaw(ref);\n return { ref, buffer };\n } catch (err: any) {\n if (err.code === 'ENOENT') return null;\n throw err;\n }\n },\n { concurrency }\n );\n return compact(results);\n }\n\n async loadRawObject(ref: Ref): Promise<BitRawObject> {\n const buffer = await this.loadRaw(ref);\n const bitRawObject = await BitRawObject.fromDeflatedBuffer(buffer, ref.hash);\n return bitRawObject as any as BitRawObject;\n }\n\n /**\n * prefer using `this.load()` for an async version, which also writes to the cache\n */\n loadSync(ref: Ref, throws = true): BitObject {\n try {\n const objectFile = fs.readFileSync(this.objectPath(ref));\n // Run hook to transform content pre reading\n const transformedContent = this.onRead(objectFile);\n return BitObject.parseSync(transformedContent);\n } catch {\n if (throws) {\n throw new HashNotFound(ref.toString());\n }\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return null;\n }\n }\n\n setCache(object: BitObject) {\n this.cache.set(object.hash().toString(), object);\n return this;\n }\n\n getCache(ref: Ref): BitObject | undefined {\n return this.cache.get(ref.toString());\n }\n\n removeFromCache(ref: Ref) {\n this.cache.delete(ref.toString());\n }\n\n async clearCache() {\n logger.debug('repository.clearCache');\n this.cache.deleteAll();\n await this.init();\n }\n clearObjectsFromCache() {\n logger.debug('repository.clearObjectsFromCache');\n this.cache.deleteAll();\n }\n\n backup(dirName?: string) {\n const backupDir = this.getBackupPath(dirName);\n const objectsDir = this.getPath();\n logger.debug(`making a backup of all objects from ${objectsDir} to ${backupDir}`);\n fs.emptyDirSync(backupDir);\n fs.copySync(objectsDir, backupDir);\n }\n\n add(object: BitObject | null | undefined): Repository {\n // console.trace(`repository: adding object ${object?.hash().toString()}`);\n if (!object) return this;\n // leave the following commented log message, it is very useful for debugging but too verbose when not needed.\n // logger.debug(`repository: adding object ${object.hash().toString()} which consist of the following id: ${object.id()}`);\n this.objects[object.hash().toString()] = object;\n this.setCache(object);\n return this;\n }\n\n addMany(objects: BitObject[]): Repository {\n if (!objects || !objects.length) return this;\n objects.forEach((obj) => this.add(obj));\n return this;\n }\n\n removeObject(ref: Ref) {\n this.objectsToRemove.push(ref);\n }\n\n removeManyObjects(refs: Ref[]) {\n if (!refs || !refs.length) return;\n refs.forEach((ref) => this.removeObject(ref));\n }\n\n findMany(refs: Ref[]): Promise<BitObject[]> {\n return Promise.all(refs.map((ref) => this.load(ref)));\n }\n\n /**\n * important! use this method only for commands that are non running on an http server.\n *\n * it's better to remove/delete objects directly and not using the `objects` member.\n * it helps to avoid multiple processes running concurrently on an http server.\n *\n * persist objects changes (added and removed) into the filesystem\n * do not call this function multiple times in parallel, otherwise, it'll damage the index.json file.\n * call this function only once after you added and removed all applicable objects.\n */\n async persist(validate = true): Promise<void> {\n // do not let two requests enter this critical area, otherwise, refs/index.json/objects could\n // be corrupted\n logger.debug(`Repository.persist, going to acquire a lock`);\n await this.persistMutex.runExclusive(async () => {\n logger.debug(`Repository.persist, validate = ${validate.toString()}, a lock has been acquired`);\n await this.deleteObjectsFromFS(this.objectsToRemove);\n this.validateObjects(validate, Object.values(this.objects));\n await this.writeObjectsToTheFS(Object.values(this.objects));\n await this.writeRemoteLanes();\n await this.unmergedComponents.write();\n });\n logger.debug(`Repository.persist, completed. the lock has been released`);\n this.clearObjects();\n if (Repository.onPostObjectsPersist) {\n Repository.onPostObjectsPersist().catch((err) => {\n logger.error('fatal: onPostObjectsPersist encountered an error (this error does not stop the process)', err);\n });\n }\n }\n\n async writeRemoteLanes() {\n await this.remoteLanes.write();\n }\n\n /**\n * this is especially critical for http server, where one process lives long and serves multiple\n * exports. without this, the objects get accumulated over time and being rewritten over and over\n * again.\n */\n private clearObjects() {\n this.objects = {};\n this.objectsToRemove = [];\n }\n\n /**\n * normally, the validation step takes place just before the acutal writing of the file.\n * however, this can be an issue where a component has an invalid version. the component could\n * be saved before validating the version (see #1727). that's why we validate here before writing\n * anything to the filesystem.\n * the open question here is whether should we validate again before the actual writing or it\n * should be enough to validate here?\n * for now, it does validate again before saving, only to be 100% sure nothing happens in a few\n * lines of code until the actual writing. however, if the performance penalty is noticeable, we\n * can easily revert it by changing `bitObject.validateBeforePersist = false` line run regardless\n * the `validate` argument.\n */\n validateObjects(validate: boolean, objects: BitObject[]) {\n objects.forEach((bitObject) => {\n // @ts-ignore some BitObject classes have validate() method\n if (validate && bitObject.validate) {\n // @ts-ignore\n bitObject.validate();\n }\n if (!validate) {\n bitObject.validateBeforePersist = false;\n }\n });\n }\n\n async deleteObjectsFromFS(refs: Ref[]): Promise<void> {\n if (!refs.length) return;\n const uniqRefs = uniqBy(refs, 'hash');\n logger.debug(`Repository._deleteMany: deleting ${uniqRefs.length} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(uniqRefs, (ref) => this._deleteOne(ref), { concurrency });\n const removed = this.scopeIndex.removeMany(uniqRefs);\n if (removed) await this.scopeIndex.write();\n }\n\n async moveObjectsToDir(refs: Ref[], dir: string): Promise<void> {\n if (!refs.length) return;\n const uniqRefs = uniqBy(refs, 'hash');\n logger.debug(`Repository.moveObjectsToDir: ${uniqRefs.length} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(uniqRefs, (ref) => this.moveOneObjectToDir(ref, dir), { concurrency });\n const removed = this.scopeIndex.removeMany(uniqRefs);\n if (removed) await this.scopeIndex.write();\n }\n\n async moveObjectsToTrash(refs: Ref[]): Promise<void> {\n await this.moveObjectsToDir(refs, TRASH_DIR);\n }\n\n async listTrash(): Promise<Ref[]> {\n return this.listRefs(this.getTrashDir());\n }\n\n async getFromTrash(refs: Ref[]): Promise<BitObject[]> {\n const objectsFromTrash = await Promise.all(\n refs.map(async (ref) => {\n const trashObjPath = path.join(this.getTrashDir(), this.hashPath(ref));\n let buffer: Buffer;\n try {\n buffer = await fs.readFile(trashObjPath);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new BitError(`unable to find the object ${ref.toString()} in the trash`);\n }\n throw err;\n }\n return BitObject.parseObject(buffer, trashObjPath);\n })\n );\n return objectsFromTrash;\n }\n\n async restoreFromTrash(refs: Ref[]) {\n logger.debug(`Repository.restoreFromTrash: ${refs.length} objects`);\n const objectsFromTrash = await this.getFromTrash(refs);\n await this.writeObjectsToTheFS(objectsFromTrash);\n }\n\n async restoreFromDir(dir: string, overwrite = false) {\n await fs.copy(path.join(this.scopePath, dir), this.getPath(), { overwrite });\n }\n\n private async moveOneObjectToDir(ref: Ref, dir: string) {\n const currentPath = this.objectPath(ref);\n const absDir = path.join(this.scopePath, dir);\n const fullPath = path.join(absDir, this.hashPath(ref));\n await fs.move(currentPath, fullPath, { overwrite: true });\n this.removeFromCache(ref);\n }\n\n private async moveOneObjectToTrash(ref: Ref) {\n await this.moveOneObjectToDir(ref, TRASH_DIR);\n }\n\n async deleteRecordsFromUnmergedComponents(compIds: ComponentID[]) {\n this.unmergedComponents.removeMultipleComponents(compIds);\n await this.unmergedComponents.write();\n }\n\n /**\n * write all objects to the FS and index the components/lanes/symlink objects\n */\n async writeObjectsToTheFS(objects: BitObject[]): Promise<void> {\n const count = objects.length;\n if (!count) return;\n logger.trace(`Repository.writeObjectsToTheFS: started writing ${count} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(objects, (obj) => this._writeOne(obj), {\n concurrency,\n });\n logger.trace(`Repository.writeObjectsToTheFS: completed writing ${count} objects`);\n\n const added = this.scopeIndex.addMany(objects);\n if (added) await this.scopeIndex.write();\n }\n\n /**\n * do not call this method directly. always call this.removeObject() and once done with all objects,\n * call this.persist()\n */\n _deleteOne(ref: Ref): Promise<boolean> {\n this.removeFromCache(ref);\n const pathToDelete = this.objectPath(ref);\n logger.trace(`repository._deleteOne: deleting ${pathToDelete}`);\n return removeFile(pathToDelete, true);\n }\n\n /**\n * always prefer this.persist() or this.writeObjectsToTheFS()\n * this method doesn't write to scopeIndex. so using this method for ModelComponent or\n * Symlink makes the index outdated.\n */\n async _writeOne(object: BitObject): Promise<boolean> {\n const contents = await object.compress();\n const options: ChownOptions = {};\n if (this.scopeJson.groupName) options.gid = await resolveGroupId(this.scopeJson.groupName);\n const hash = object.hash();\n if (this.cache.has(hash.toString())) this.cache.set(hash.toString(), object); // update the cache\n const objectPath = this.objectPath(hash);\n logger.trace(`repository._writeOne: ${objectPath}`);\n // Run hook to transform content pre persisting\n const transformedContent = this.onPersist(contents);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return writeFile(objectPath, transformedContent, options);\n }\n\n async writeObjectsToPendingDir(objectList: ObjectList, pendingDir: PathOsBasedAbsolute) {\n const options: ChownOptions = {};\n if (this.scopeJson.groupName) options.gid = await resolveGroupId(this.scopeJson.groupName);\n await Promise.all(\n objectList.objects.map(async (object) => {\n const objPath = path.join(pendingDir, this.hashPath(object.ref));\n await writeFile(objPath, object.buffer, options);\n })\n );\n }\n\n async readObjectsFromPendingDir(pendingDir: PathOsBasedAbsolute) {\n const refs = await this.listRefs(pendingDir);\n const objects = await Promise.all(\n refs.map(async (ref) => {\n const buffer = await fs.readFile(path.join(pendingDir, this.hashPath(ref)));\n return { ref, buffer };\n })\n );\n return new ObjectList(objects);\n }\n\n private hashPath(ref: Ref) {\n const hash = ref.toString();\n return path.join(hash.slice(0, 2), hash.slice(2));\n }\n}\n\nasync function removeFile(filePath: string, propagateDirs = false): Promise<boolean> {\n try {\n await fs.unlink(filePath);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n // the file doesn't exist, that's fine, no need to do anything\n return false;\n }\n throw err;\n }\n if (!propagateDirs) return true;\n const { dir } = path.parse(filePath);\n await removeEmptyDir(dir);\n return true;\n}\n\nfunction resolveGroupId(groupName: string): Promise<number | null | undefined> {\n return new Promise((resolve, reject) => {\n uidNumber(null, groupName, (err, uid, gid) => {\n if (err) {\n logger.error('resolveGroupId', err);\n if (err.message.includes('EPERM')) {\n return reject(\n new BitError(\n `unable to resolve group id of \"${groupName}\", current user does not have sufficient permissions`\n )\n );\n }\n if (err.message.includes('group id does not exist')) {\n return reject(new BitError(`unable to resolve group id of \"${groupName}\", the group does not exist`));\n }\n return reject(new BitError(`unable to resolve group id of \"${groupName}\", got an error ${err.message}`));\n }\n // on Windows it'll always be null\n return resolve(gid);\n });\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -169,7 +169,6 @@ class ScopeIndex {
|
|
169
169
|
return Object.values(this.index).flat();
|
170
170
|
}
|
171
171
|
getHashes(indexType) {
|
172
|
-
// @ts-ignore how to tell TS that all this.index.prop are array?
|
173
172
|
return this.index[indexType].map(indexItem => indexItem.hash);
|
174
173
|
}
|
175
174
|
getHashesByQuery(indexType, filter) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_asyncMutex","path","_interopRequireWildcard","_laneId","_legacy","_legacy2","_models","_lane","_lodash","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","COMPONENTS_INDEX_FILENAME","ComponentItem","constructor","id","isSymlink","hash","toIdentifierString","scope","name","exports","LaneItem","toLaneId","LaneId","IndexType","ScopeIndex","indexPath","index","components","lanes","writeIndexMutex","_writeIndexMutex","Mutex","load","basePath","_composePath","indexRaw","fs","readJson","getIndexWithBackwardCompatibility","Array","isArray","indexObject","map","c","l","err","message","includes","InvalidIndexJson","create","reset","logger","debug","remove","write","runExclusive","writeJson","spaces","getAll","values","flat","getHashes","indexType","indexItem","getHashesByQuery","filter","getHashesIncludeSymlinks","addMany","bitObjects","added","bitObject","addOne","some","oneAdded","ModelComponent","Symlink","Lane","toString","found","find","isEqual","laneItem","push","_exist","componentItem","removeMany","refs","removed","ref","removeOne","removedOne","entity","keys","difference","deleteFile","getPath","isFileOnBitHub","Boolean","join"],"sources":["scope-index.ts"],"sourcesContent":["/* eslint max-classes-per-file: 0 */\nimport fs from 'fs-extra';\nimport { Mutex } from 'async-mutex';\nimport * as path from 'path';\nimport { LaneId } from '@teambit/lane-id';\nimport { logger } from '@teambit/legacy.logger';\nimport { InvalidIndexJson } from '@teambit/legacy.scope';\nimport { ModelComponent, Symlink } from '../models';\nimport Lane from '../models/lane';\nimport type BitObject from './object';\nimport type Ref from './ref';\nimport { difference } from 'lodash';\n\nconst COMPONENTS_INDEX_FILENAME = 'index.json';\n\nexport interface IndexItem {\n hash: string;\n toIdentifierString(): string;\n}\n\nexport class ComponentItem implements IndexItem {\n constructor(\n public id: { scope: string | null; name: string },\n public isSymlink: boolean,\n public hash: string\n ) {}\n\n toIdentifierString(): string {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `component \"${scope}${this.id.name}\"`;\n }\n}\n\nexport class LaneItem implements IndexItem {\n constructor(\n public id: { scope: string; name: string },\n public hash: string\n ) {}\n\n toIdentifierString() {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `lane \"${scope}${this.id.name}\"`;\n }\n\n toLaneId(): LaneId {\n return new LaneId({ name: this.id.name, scope: this.id.scope });\n }\n}\n\nexport enum IndexType {\n components = 'components',\n lanes = 'lanes',\n}\n\ntype Index = { [IndexType.components]: ComponentItem[]; [IndexType.lanes]: LaneItem[] };\n\nexport class ScopeIndex {\n indexPath: string;\n index: Index;\n _writeIndexMutex?: Mutex;\n constructor(indexPath: string, index: Index = { [IndexType.components]: [], [IndexType.lanes]: [] }) {\n this.indexPath = indexPath;\n this.index = index;\n }\n get writeIndexMutex() {\n if (!this._writeIndexMutex) {\n this._writeIndexMutex = new Mutex();\n }\n return this._writeIndexMutex;\n }\n static async load(basePath: string): Promise<ScopeIndex> {\n const indexPath = this._composePath(basePath);\n try {\n const indexRaw = await fs.readJson(indexPath);\n const getIndexWithBackwardCompatibility = (): Index => {\n if (Array.isArray(indexRaw)) {\n return { [IndexType.components]: indexRaw, [IndexType.lanes]: [] };\n }\n return indexRaw;\n };\n const indexObject = getIndexWithBackwardCompatibility();\n const index = {\n [IndexType.components]: indexObject[IndexType.components].map(\n (c) => new ComponentItem(c.id, c.isSymlink, c.hash)\n ),\n [IndexType.lanes]: indexObject[IndexType.lanes].map((l) => new LaneItem(l.id, l.hash)),\n };\n return new ScopeIndex(indexPath, index);\n } catch (err: any) {\n if (err.message.includes('Unexpected token')) {\n throw new InvalidIndexJson(indexPath, err.message);\n }\n throw err;\n }\n }\n static create(basePath: string): ScopeIndex {\n const indexPath = this._composePath(basePath);\n return new ScopeIndex(indexPath);\n }\n static async reset(basePath: string) {\n const indexPath = this._composePath(basePath);\n logger.debug(`ComponentsIndex, deleting the index file at ${indexPath}`);\n await fs.remove(indexPath);\n }\n async write() {\n // write only one at a time to avoid corrupting the json file.\n await this.writeIndexMutex.runExclusive(() => fs.writeJson(this.indexPath, this.index, { spaces: 2 }));\n }\n getAll(): IndexItem[] {\n return Object.values(this.index).flat();\n }\n\n getHashes(indexType: IndexType): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesByQuery(indexType: IndexType, filter: Function): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].filter(filter).map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesIncludeSymlinks(): string[] {\n return this.index.components.map((indexItem) => indexItem.hash);\n }\n addMany(bitObjects: BitObject[]): boolean {\n const added = bitObjects.map((bitObject) => this.addOne(bitObject));\n return added.some((oneAdded) => oneAdded); // return true if one of the objects was added\n }\n addOne(bitObject: BitObject): boolean {\n if (!(bitObject instanceof ModelComponent) && !(bitObject instanceof Symlink) && !(bitObject instanceof Lane))\n return false;\n const hash = bitObject.hash().toString();\n\n if (bitObject instanceof Lane) {\n const found = this.find(hash) as LaneItem | undefined;\n if (found) {\n if ((found as LaneItem).toLaneId().isEqual(bitObject.toLaneId())) return false;\n found.id = bitObject.toLaneId();\n } else {\n const laneItem = new LaneItem(bitObject.toLaneId(), hash);\n this.index.lanes.push(laneItem);\n }\n return true;\n }\n if (bitObject instanceof ModelComponent || bitObject instanceof Symlink) {\n if (this._exist(hash)) return false;\n const componentItem = new ComponentItem(\n { scope: bitObject.scope || null, name: bitObject.name },\n bitObject instanceof Symlink,\n hash\n );\n this.index.components.push(componentItem);\n }\n return true;\n }\n removeMany(refs: Ref[]): boolean {\n const removed = refs.map((ref) => this.removeOne(ref.toString()));\n return removed.some((removedOne) => removedOne); // return true if one of the objects was removed\n }\n removeOne(hash: string): boolean {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) {\n this.index[entity] = difference(this.index[entity], [found]);\n return true;\n }\n }\n return false;\n }\n async deleteFile() {\n logger.debug(`ComponentsIndex, deleting the index file at ${this.indexPath}`);\n await fs.remove(this.indexPath);\n }\n getPath() {\n return this.indexPath;\n }\n /**\n * it's obviously not accurate. a local path might include 'bithub' as part of the path as well.\n * however, it's needed only for suppressing the error message when the indexJson is outdate,\n * so if it happens on a local scope it's okay.\n * for other purposes, don't rely on this.\n */\n isFileOnBitHub() {\n return this.indexPath.includes('/bithub/') || this.indexPath.includes('/tmp/scope-fs/');\n }\n find(hash: string): IndexItem | null {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) return found;\n }\n return null;\n }\n _exist(hash: string): boolean {\n return Boolean(this.find(hash));\n }\n static _composePath(basePath: string): string {\n return path.join(basePath, COMPONENTS_INDEX_FILENAME);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_asyncMutex","path","_interopRequireWildcard","_laneId","_legacy","_legacy2","_models","_lane","_lodash","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","COMPONENTS_INDEX_FILENAME","ComponentItem","constructor","id","isSymlink","hash","toIdentifierString","scope","name","exports","LaneItem","toLaneId","LaneId","IndexType","ScopeIndex","indexPath","index","components","lanes","writeIndexMutex","_writeIndexMutex","Mutex","load","basePath","_composePath","indexRaw","fs","readJson","getIndexWithBackwardCompatibility","Array","isArray","indexObject","map","c","l","err","message","includes","InvalidIndexJson","create","reset","logger","debug","remove","write","runExclusive","writeJson","spaces","getAll","values","flat","getHashes","indexType","indexItem","getHashesByQuery","filter","getHashesIncludeSymlinks","addMany","bitObjects","added","bitObject","addOne","some","oneAdded","ModelComponent","Symlink","Lane","toString","found","find","isEqual","laneItem","push","_exist","componentItem","removeMany","refs","removed","ref","removeOne","removedOne","entity","keys","difference","deleteFile","getPath","isFileOnBitHub","Boolean","join"],"sources":["scope-index.ts"],"sourcesContent":["/* eslint max-classes-per-file: 0 */\nimport fs from 'fs-extra';\nimport { Mutex } from 'async-mutex';\nimport * as path from 'path';\nimport { LaneId } from '@teambit/lane-id';\nimport { logger } from '@teambit/legacy.logger';\nimport { InvalidIndexJson } from '@teambit/legacy.scope';\nimport { ModelComponent, Symlink } from '../models';\nimport Lane from '../models/lane';\nimport type BitObject from './object';\nimport type Ref from './ref';\nimport { difference } from 'lodash';\n\nconst COMPONENTS_INDEX_FILENAME = 'index.json';\n\nexport interface IndexItem {\n hash: string;\n toIdentifierString(): string;\n}\n\nexport class ComponentItem implements IndexItem {\n constructor(\n public id: { scope: string | null; name: string },\n public isSymlink: boolean,\n public hash: string\n ) {}\n\n toIdentifierString(): string {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `component \"${scope}${this.id.name}\"`;\n }\n}\n\nexport class LaneItem implements IndexItem {\n constructor(\n public id: { scope: string; name: string },\n public hash: string\n ) {}\n\n toIdentifierString() {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `lane \"${scope}${this.id.name}\"`;\n }\n\n toLaneId(): LaneId {\n return new LaneId({ name: this.id.name, scope: this.id.scope });\n }\n}\n\nexport enum IndexType {\n components = 'components',\n lanes = 'lanes',\n}\n\ntype Index = { [IndexType.components]: ComponentItem[]; [IndexType.lanes]: LaneItem[] };\n\nexport class ScopeIndex {\n indexPath: string;\n index: Index;\n _writeIndexMutex?: Mutex;\n constructor(indexPath: string, index: Index = { [IndexType.components]: [], [IndexType.lanes]: [] }) {\n this.indexPath = indexPath;\n this.index = index;\n }\n get writeIndexMutex() {\n if (!this._writeIndexMutex) {\n this._writeIndexMutex = new Mutex();\n }\n return this._writeIndexMutex;\n }\n static async load(basePath: string): Promise<ScopeIndex> {\n const indexPath = this._composePath(basePath);\n try {\n const indexRaw = await fs.readJson(indexPath);\n const getIndexWithBackwardCompatibility = (): Index => {\n if (Array.isArray(indexRaw)) {\n return { [IndexType.components]: indexRaw, [IndexType.lanes]: [] };\n }\n return indexRaw;\n };\n const indexObject = getIndexWithBackwardCompatibility();\n const index = {\n [IndexType.components]: indexObject[IndexType.components].map(\n (c) => new ComponentItem(c.id, c.isSymlink, c.hash)\n ),\n [IndexType.lanes]: indexObject[IndexType.lanes].map((l) => new LaneItem(l.id, l.hash)),\n };\n return new ScopeIndex(indexPath, index);\n } catch (err: any) {\n if (err.message.includes('Unexpected token')) {\n throw new InvalidIndexJson(indexPath, err.message);\n }\n throw err;\n }\n }\n static create(basePath: string): ScopeIndex {\n const indexPath = this._composePath(basePath);\n return new ScopeIndex(indexPath);\n }\n static async reset(basePath: string) {\n const indexPath = this._composePath(basePath);\n logger.debug(`ComponentsIndex, deleting the index file at ${indexPath}`);\n await fs.remove(indexPath);\n }\n async write() {\n // write only one at a time to avoid corrupting the json file.\n await this.writeIndexMutex.runExclusive(() => fs.writeJson(this.indexPath, this.index, { spaces: 2 }));\n }\n getAll(): IndexItem[] {\n return Object.values(this.index).flat();\n }\n\n getHashes(indexType: IndexType): string[] {\n return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesByQuery(indexType: IndexType, filter: Function): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].filter(filter).map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesIncludeSymlinks(): string[] {\n return this.index.components.map((indexItem) => indexItem.hash);\n }\n addMany(bitObjects: BitObject[]): boolean {\n const added = bitObjects.map((bitObject) => this.addOne(bitObject));\n return added.some((oneAdded) => oneAdded); // return true if one of the objects was added\n }\n addOne(bitObject: BitObject): boolean {\n if (!(bitObject instanceof ModelComponent) && !(bitObject instanceof Symlink) && !(bitObject instanceof Lane))\n return false;\n const hash = bitObject.hash().toString();\n\n if (bitObject instanceof Lane) {\n const found = this.find(hash) as LaneItem | undefined;\n if (found) {\n if ((found as LaneItem).toLaneId().isEqual(bitObject.toLaneId())) return false;\n found.id = bitObject.toLaneId();\n } else {\n const laneItem = new LaneItem(bitObject.toLaneId(), hash);\n this.index.lanes.push(laneItem);\n }\n return true;\n }\n if (bitObject instanceof ModelComponent || bitObject instanceof Symlink) {\n if (this._exist(hash)) return false;\n const componentItem = new ComponentItem(\n { scope: bitObject.scope || null, name: bitObject.name },\n bitObject instanceof Symlink,\n hash\n );\n this.index.components.push(componentItem);\n }\n return true;\n }\n removeMany(refs: Ref[]): boolean {\n const removed = refs.map((ref) => this.removeOne(ref.toString()));\n return removed.some((removedOne) => removedOne); // return true if one of the objects was removed\n }\n removeOne(hash: string): boolean {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) {\n this.index[entity] = difference(this.index[entity], [found]);\n return true;\n }\n }\n return false;\n }\n async deleteFile() {\n logger.debug(`ComponentsIndex, deleting the index file at ${this.indexPath}`);\n await fs.remove(this.indexPath);\n }\n getPath() {\n return this.indexPath;\n }\n /**\n * it's obviously not accurate. a local path might include 'bithub' as part of the path as well.\n * however, it's needed only for suppressing the error message when the indexJson is outdate,\n * so if it happens on a local scope it's okay.\n * for other purposes, don't rely on this.\n */\n isFileOnBitHub() {\n return this.indexPath.includes('/bithub/') || this.indexPath.includes('/tmp/scope-fs/');\n }\n find(hash: string): IndexItem | null {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) return found;\n }\n return null;\n }\n _exist(hash: string): boolean {\n return Boolean(this.find(hash));\n }\n static _composePath(basePath: string): string {\n return path.join(basePath, COMPONENTS_INDEX_FILENAME);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -52,7 +52,6 @@ import { DetachedHeads } from './detach-heads';
|
|
52
52
|
|
53
53
|
type State = {
|
54
54
|
versions?: {
|
55
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
56
55
|
[version: string]: {
|
57
56
|
local?: boolean; // whether a component was changed locally
|
58
57
|
};
|
@@ -101,7 +100,6 @@ export const VERSION_ZERO = '0.0.0';
|
|
101
100
|
* with 'Component' in their headers. see object-registrar.types()
|
102
101
|
*/
|
103
102
|
// TODO: FIX me .parser
|
104
|
-
// @ts-ignore
|
105
103
|
export default class Component extends BitObject {
|
106
104
|
scope: string;
|
107
105
|
name: string;
|
@@ -606,7 +604,6 @@ export default class Component extends BitObject {
|
|
606
604
|
collectVersions(repo: Repository): Promise<ConsumerComponent[]> {
|
607
605
|
return Promise.all(
|
608
606
|
this.listVersions().map((versionNum) => {
|
609
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
610
607
|
return this.toConsumerComponent(versionNum, this.scope, repo);
|
611
608
|
})
|
612
609
|
);
|
@@ -1089,7 +1086,6 @@ consider using --ignore-missing-artifacts flag if you're sure the artifacts are
|
|
1089
1086
|
// @todo: this is weird. why the scopeMeta would be taken from the current scope and not he component scope?
|
1090
1087
|
const scopeMetaP = scopeName ? ScopeMeta.fromScopeName(scopeName).load(repository) : Promise.resolve();
|
1091
1088
|
const log = version.log || null;
|
1092
|
-
// @ts-ignore
|
1093
1089
|
const [files, scopeMeta] = await Promise.all([filesP, scopeMetaP]);
|
1094
1090
|
|
1095
1091
|
const extensions = version.extensions.clone();
|
package/models/scopeMeta.ts
CHANGED
@@ -8,7 +8,6 @@ type ScopeMetaProps = {
|
|
8
8
|
};
|
9
9
|
|
10
10
|
// TODO: fix parse
|
11
|
-
// @ts-ignore
|
12
11
|
export default class ScopeMeta extends BitObject {
|
13
12
|
license: string | null | undefined;
|
14
13
|
name: string;
|
@@ -26,7 +25,6 @@ export default class ScopeMeta extends BitObject {
|
|
26
25
|
};
|
27
26
|
}
|
28
27
|
|
29
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
30
28
|
toString(pretty: boolean): string {
|
31
29
|
const args = getStringifyArgs(pretty);
|
32
30
|
return JSON.stringify(this.toObject(), ...args);
|
package/models/source.ts
CHANGED
package/models/version.ts
CHANGED
@@ -70,11 +70,8 @@ export type VersionProps = {
|
|
70
70
|
flattenedEdges?: DepEdge[];
|
71
71
|
flattenedEdgesRef?: Ref;
|
72
72
|
dependenciesGraphRef?: Ref;
|
73
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
74
73
|
packageDependencies?: { [key: string]: string };
|
75
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
76
74
|
devPackageDependencies?: { [key: string]: string };
|
77
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
78
75
|
peerPackageDependencies?: { [key: string]: string };
|
79
76
|
bindingPrefix: string;
|
80
77
|
schema?: string;
|
@@ -123,7 +120,6 @@ export default class Version extends BitObject {
|
|
123
120
|
* (around August 2023 should be safe)
|
124
121
|
*/
|
125
122
|
private flattenedEdges: DepEdge[];
|
126
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
127
123
|
packageDependencies: { [key: string]: string };
|
128
124
|
devPackageDependencies: { [key: string]: string };
|
129
125
|
peerPackageDependencies: { [key: string]: string };
|
@@ -700,7 +696,6 @@ export default class Version extends BitObject {
|
|
700
696
|
files: files.map(parseFile),
|
701
697
|
bindingPrefix: component.bindingPrefix,
|
702
698
|
log: component.log as Log,
|
703
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
704
699
|
docs: component.docs,
|
705
700
|
dependencies: component.dependencies.get(),
|
706
701
|
devDependencies: component.devDependencies.get(),
|
@@ -714,7 +709,6 @@ export default class Version extends BitObject {
|
|
714
709
|
flattenedEdgesRef: flattenedEdges?.hash(),
|
715
710
|
schema: component.schema,
|
716
711
|
overrides: component.overrides.componentOverridesData,
|
717
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
718
712
|
packageJsonChangedProps: component.packageJsonChangedProps,
|
719
713
|
extensions: component.extensions,
|
720
714
|
buildStatus: component.buildStatus,
|
package/objects/object.ts
CHANGED
package/objects/raw-object.ts
CHANGED
@@ -8,7 +8,6 @@ export default class BitRawObject {
|
|
8
8
|
headers: string[];
|
9
9
|
type: string;
|
10
10
|
content: Buffer;
|
11
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
12
11
|
parsedContent: any;
|
13
12
|
_ref: string;
|
14
13
|
|
@@ -17,7 +16,6 @@ export default class BitRawObject {
|
|
17
16
|
ref: string | null | undefined,
|
18
17
|
type: string | null | undefined,
|
19
18
|
content: Buffer | null | undefined,
|
20
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
21
19
|
parsedContent: any | null | undefined
|
22
20
|
) {
|
23
21
|
let headers;
|
@@ -72,17 +70,14 @@ export default class BitRawObject {
|
|
72
70
|
}
|
73
71
|
}
|
74
72
|
|
75
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
76
73
|
set ref(ref: string) {
|
77
74
|
this._ref = ref;
|
78
75
|
}
|
79
76
|
|
80
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
81
77
|
get ref(): string {
|
82
78
|
return this._ref;
|
83
79
|
}
|
84
80
|
|
85
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
86
81
|
get id(): string {
|
87
82
|
switch (this.type) {
|
88
83
|
case 'Version':
|
@@ -114,11 +109,7 @@ export default class BitRawObject {
|
|
114
109
|
return [];
|
115
110
|
}
|
116
111
|
|
117
|
-
static async fromDeflatedBuffer(
|
118
|
-
fileContents: Buffer,
|
119
|
-
ref: string | null | undefined
|
120
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
121
|
-
): Promise<BitObject> {
|
112
|
+
static async fromDeflatedBuffer(fileContents: Buffer, ref: string | null | undefined): Promise<BitObject> {
|
122
113
|
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
123
114
|
return inflate(fileContents).then((buffer) => new BitRawObject(buffer, ref));
|
124
115
|
}
|
@@ -129,7 +120,6 @@ export default class BitRawObject {
|
|
129
120
|
* @param {Any} parsedContent
|
130
121
|
*/
|
131
122
|
toRealObject() {
|
132
|
-
// @ts-ignore
|
133
123
|
return types[this.type].from(this.parsedContent || this.getParsedContent(), this.headers[1]);
|
134
124
|
}
|
135
125
|
|
package/objects/repository.ts
CHANGED
@@ -32,7 +32,6 @@ const OBJECTS_BACKUP_DIR = `${OBJECTS_DIR}.bak`;
|
|
32
32
|
const TRASH_DIR = 'trash';
|
33
33
|
|
34
34
|
export default class Repository {
|
35
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
36
35
|
objects: { [key: string]: BitObject } = {};
|
37
36
|
objectsToRemove: Ref[] = [];
|
38
37
|
scopeJson: ScopeJson;
|
package/objects/scope-index.ts
CHANGED
@@ -111,7 +111,6 @@ export class ScopeIndex {
|
|
111
111
|
}
|
112
112
|
|
113
113
|
getHashes(indexType: IndexType): string[] {
|
114
|
-
// @ts-ignore how to tell TS that all this.index.prop are array?
|
115
114
|
return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);
|
116
115
|
}
|
117
116
|
getHashesByQuery(indexType: IndexType, filter: Function): string[] {
|