@teambit/objects 0.0.0-fe8e30c7942d34e4dfb8bda5b2527ab810254a3d → 0.0.0-ff3121b14c6880670d2b2c275634315b73294711

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.
Files changed (73) hide show
  1. package/dist/models/dependencies-graph.d.ts +1 -1
  2. package/dist/models/dependencies-graph.js.map +1 -1
  3. package/dist/models/export-metadata.js +0 -2
  4. package/dist/models/export-metadata.js.map +1 -1
  5. package/dist/models/lane-history.d.ts +1 -1
  6. package/dist/models/lane-history.js.map +1 -1
  7. package/dist/models/lane.d.ts +6 -5
  8. package/dist/models/lane.js.map +1 -1
  9. package/dist/models/model-component.d.ts +10 -8
  10. package/dist/models/model-component.js +22 -5
  11. package/dist/models/model-component.js.map +1 -1
  12. package/dist/models/scopeMeta.d.ts +1 -1
  13. package/dist/models/scopeMeta.js +0 -3
  14. package/dist/models/scopeMeta.js.map +1 -1
  15. package/dist/models/source.d.ts +2 -2
  16. package/dist/models/source.js +0 -1
  17. package/dist/models/source.js.map +1 -1
  18. package/dist/models/symlink.d.ts +1 -1
  19. package/dist/models/version-history.d.ts +1 -1
  20. package/dist/models/version-history.js.map +1 -1
  21. package/dist/models/version.d.ts +11 -9
  22. package/dist/models/version.js +1 -13
  23. package/dist/models/version.js.map +1 -1
  24. package/dist/models/version.spec.js +4 -12
  25. package/dist/models/version.spec.js.map +1 -1
  26. package/dist/objects/bit-object-list.d.ts +1 -1
  27. package/dist/objects/bit-object-list.js.map +1 -1
  28. package/dist/objects/object-list-to-graph.d.ts +2 -2
  29. package/dist/objects/object-list-to-graph.js.map +1 -1
  30. package/dist/objects/object-list.d.ts +6 -0
  31. package/dist/objects/object-list.js +20 -0
  32. package/dist/objects/object-list.js.map +1 -1
  33. package/dist/objects/object.d.ts +2 -2
  34. package/dist/objects/object.js +0 -1
  35. package/dist/objects/object.js.map +1 -1
  36. package/dist/objects/objects-readable-generator.d.ts +4 -4
  37. package/dist/objects/objects-readable-generator.js.map +1 -1
  38. package/dist/objects/raw-object.d.ts +2 -2
  39. package/dist/objects/raw-object.js +1 -11
  40. package/dist/objects/raw-object.js.map +1 -1
  41. package/dist/objects/ref.d.ts +2 -2
  42. package/dist/objects/ref.js.map +1 -1
  43. package/dist/objects/repository.d.ts +23 -7
  44. package/dist/objects/repository.js +23 -12
  45. package/dist/objects/repository.js.map +1 -1
  46. package/dist/objects/scope-index.d.ts +2 -2
  47. package/dist/objects/scope-index.js +0 -1
  48. package/dist/objects/scope-index.js.map +1 -1
  49. package/models/dependencies-graph.ts +1 -1
  50. package/models/export-metadata.ts +0 -1
  51. package/models/lane-history.ts +1 -1
  52. package/models/lane.ts +4 -3
  53. package/models/model-component.ts +36 -16
  54. package/models/scopeMeta.ts +1 -3
  55. package/models/source.ts +0 -1
  56. package/models/version-history.ts +1 -1
  57. package/models/version.spec.ts +4 -12
  58. package/models/version.ts +10 -21
  59. package/objects/bit-object-list.ts +1 -1
  60. package/objects/object-list-to-graph.ts +2 -2
  61. package/objects/object-list.ts +14 -0
  62. package/objects/object.ts +2 -3
  63. package/objects/objects-readable-generator.ts +6 -6
  64. package/objects/raw-object.ts +2 -12
  65. package/objects/ref.ts +2 -2
  66. package/objects/repository.ts +29 -17
  67. package/objects/scope-index.ts +2 -3
  68. package/package.json +32 -32
  69. package/dist/objects/repository-hooks.d.ts +0 -4
  70. package/dist/objects/repository-hooks.js +0 -56
  71. package/dist/objects/repository-hooks.js.map +0 -1
  72. package/objects/repository-hooks.ts +0 -42
  73. /package/dist/{preview-1752679581363.js → preview-1765762480694.js} +0 -0
@@ -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 BitObject from './object';\nimport Ref from './ref';\nimport { difference } from 'lodash';\n\nconst COMPONENTS_INDEX_FILENAME = 'index.json';\n\nexport interface IndexItem {\n hash: string;\n toIdentifierString(): string;\n}\n\nexport class ComponentItem implements IndexItem {\n constructor(\n public id: { scope: string | null; name: string },\n public isSymlink: boolean,\n public hash: string\n ) {}\n\n toIdentifierString(): string {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `component \"${scope}${this.id.name}\"`;\n }\n}\n\nexport class LaneItem implements IndexItem {\n constructor(\n public id: { scope: string; name: string },\n public hash: string\n ) {}\n\n toIdentifierString() {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `lane \"${scope}${this.id.name}\"`;\n }\n\n toLaneId(): LaneId {\n return new LaneId({ name: this.id.name, scope: this.id.scope });\n }\n}\n\nexport enum IndexType {\n components = 'components',\n lanes = 'lanes',\n}\n\ntype Index = { [IndexType.components]: ComponentItem[]; [IndexType.lanes]: LaneItem[] };\n\nexport class ScopeIndex {\n indexPath: string;\n index: Index;\n _writeIndexMutex?: Mutex;\n constructor(indexPath: string, index: Index = { [IndexType.components]: [], [IndexType.lanes]: [] }) {\n this.indexPath = indexPath;\n this.index = index;\n }\n get writeIndexMutex() {\n if (!this._writeIndexMutex) {\n this._writeIndexMutex = new Mutex();\n }\n return this._writeIndexMutex;\n }\n static async load(basePath: string): Promise<ScopeIndex> {\n const indexPath = this._composePath(basePath);\n try {\n const indexRaw = await fs.readJson(indexPath);\n const getIndexWithBackwardCompatibility = (): Index => {\n if (Array.isArray(indexRaw)) {\n return { [IndexType.components]: indexRaw, [IndexType.lanes]: [] };\n }\n return indexRaw;\n };\n const indexObject = getIndexWithBackwardCompatibility();\n const index = {\n [IndexType.components]: indexObject[IndexType.components].map(\n (c) => new ComponentItem(c.id, c.isSymlink, c.hash)\n ),\n [IndexType.lanes]: indexObject[IndexType.lanes].map((l) => new LaneItem(l.id, l.hash)),\n };\n return new ScopeIndex(indexPath, index);\n } catch (err: any) {\n if (err.message.includes('Unexpected token')) {\n throw new InvalidIndexJson(indexPath, err.message);\n }\n throw err;\n }\n }\n static create(basePath: string): ScopeIndex {\n const indexPath = this._composePath(basePath);\n return new ScopeIndex(indexPath);\n }\n static async reset(basePath: string) {\n const indexPath = this._composePath(basePath);\n logger.debug(`ComponentsIndex, deleting the index file at ${indexPath}`);\n await fs.remove(indexPath);\n }\n async write() {\n // write only one at a time to avoid corrupting the json file.\n await this.writeIndexMutex.runExclusive(() => fs.writeJson(this.indexPath, this.index, { spaces: 2 }));\n }\n getAll(): IndexItem[] {\n return Object.values(this.index).flat();\n }\n\n getHashes(indexType: IndexType): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesByQuery(indexType: IndexType, filter: Function): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].filter(filter).map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesIncludeSymlinks(): string[] {\n return this.index.components.map((indexItem) => indexItem.hash);\n }\n addMany(bitObjects: BitObject[]): boolean {\n const added = bitObjects.map((bitObject) => this.addOne(bitObject));\n return added.some((oneAdded) => oneAdded); // return true if one of the objects was added\n }\n addOne(bitObject: BitObject): boolean {\n if (!(bitObject instanceof ModelComponent) && !(bitObject instanceof Symlink) && !(bitObject instanceof Lane))\n return false;\n const hash = bitObject.hash().toString();\n\n if (bitObject instanceof Lane) {\n const found = this.find(hash) as LaneItem | undefined;\n if (found) {\n if ((found as LaneItem).toLaneId().isEqual(bitObject.toLaneId())) return false;\n found.id = bitObject.toLaneId();\n } else {\n const laneItem = new LaneItem(bitObject.toLaneId(), hash);\n this.index.lanes.push(laneItem);\n }\n return true;\n }\n if (bitObject instanceof ModelComponent || bitObject instanceof Symlink) {\n if (this._exist(hash)) return false;\n const componentItem = new ComponentItem(\n { scope: bitObject.scope || null, name: bitObject.name },\n bitObject instanceof Symlink,\n hash\n );\n this.index.components.push(componentItem);\n }\n return true;\n }\n removeMany(refs: Ref[]): boolean {\n const removed = refs.map((ref) => this.removeOne(ref.toString()));\n return removed.some((removedOne) => removedOne); // return true if one of the objects was removed\n }\n removeOne(hash: string): boolean {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) {\n this.index[entity] = difference(this.index[entity], [found]);\n return true;\n }\n }\n return false;\n }\n async deleteFile() {\n logger.debug(`ComponentsIndex, deleting the index file at ${this.indexPath}`);\n await fs.remove(this.indexPath);\n }\n getPath() {\n return this.indexPath;\n }\n /**\n * it's obviously not accurate. a local path might include 'bithub' as part of the path as well.\n * however, it's needed only for suppressing the error message when the indexJson is outdate,\n * so if it happens on a local scope it's okay.\n * for other purposes, don't rely on this.\n */\n isFileOnBitHub() {\n return this.indexPath.includes('/bithub/') || this.indexPath.includes('/tmp/scope-fs/');\n }\n find(hash: string): IndexItem | null {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) return found;\n }\n return null;\n }\n _exist(hash: string): boolean {\n return Boolean(this.find(hash));\n }\n static _composePath(basePath: string): string {\n return path.join(basePath, COMPONENTS_INDEX_FILENAME);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_asyncMutex","path","_interopRequireWildcard","_laneId","_legacy","_legacy2","_models","_lane","_lodash","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","COMPONENTS_INDEX_FILENAME","ComponentItem","constructor","id","isSymlink","hash","toIdentifierString","scope","name","exports","LaneItem","toLaneId","LaneId","IndexType","ScopeIndex","indexPath","index","components","lanes","writeIndexMutex","_writeIndexMutex","Mutex","load","basePath","_composePath","indexRaw","fs","readJson","getIndexWithBackwardCompatibility","Array","isArray","indexObject","map","c","l","err","message","includes","InvalidIndexJson","create","reset","logger","debug","remove","write","runExclusive","writeJson","spaces","getAll","values","flat","getHashes","indexType","indexItem","getHashesByQuery","filter","getHashesIncludeSymlinks","addMany","bitObjects","added","bitObject","addOne","some","oneAdded","ModelComponent","Symlink","Lane","toString","found","find","isEqual","laneItem","push","_exist","componentItem","removeMany","refs","removed","ref","removeOne","removedOne","entity","keys","difference","deleteFile","getPath","isFileOnBitHub","Boolean","join"],"sources":["scope-index.ts"],"sourcesContent":["/* eslint max-classes-per-file: 0 */\nimport fs from 'fs-extra';\nimport { Mutex } from 'async-mutex';\nimport * as path from 'path';\nimport { LaneId } from '@teambit/lane-id';\nimport { logger } from '@teambit/legacy.logger';\nimport { InvalidIndexJson } from '@teambit/legacy.scope';\nimport { ModelComponent, Symlink } from '../models';\nimport Lane from '../models/lane';\nimport 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":[]}
@@ -1,5 +1,5 @@
1
1
  import semver from 'semver';
2
- import { LockfilePackageInfo } from '@pnpm/lockfile.types';
2
+ import type { LockfilePackageInfo } from '@pnpm/lockfile.types';
3
3
  import * as dp from '@pnpm/dependency-path';
4
4
 
5
5
  export type PackagesMap = Map<string, PackageAttributes>;
@@ -29,7 +29,6 @@ export default class ExportMetadata extends BitObject {
29
29
  };
30
30
  }
31
31
 
32
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
33
32
  toString(pretty: boolean): string {
34
33
  const args = getStringifyArgs(pretty);
35
34
  return JSON.stringify(this.toObject(), ...args);
@@ -2,7 +2,7 @@ import { v4 } from 'uuid';
2
2
  import { getStringifyArgs } from '@teambit/legacy.utils';
3
3
  import { getBasicLog } from '@teambit/harmony.modules.get-basic-log';
4
4
  import { BitObject } from '../objects';
5
- import Lane from './lane';
5
+ import type Lane from './lane';
6
6
 
7
7
  type Log = { date: string; username?: string; email?: string; message?: string };
8
8
 
package/models/lane.ts CHANGED
@@ -5,15 +5,16 @@ import { BitError } from '@teambit/bit-error';
5
5
  import { ComponentID, ComponentIdList } from '@teambit/component-id';
6
6
  import { isSnap } from '@teambit/component-version';
7
7
  import { LaneId, DEFAULT_LANE, LANE_REMOTE_DELIMITER } from '@teambit/lane-id';
8
- import { Scope } from '@teambit/legacy.scope';
8
+ import type { Scope } from '@teambit/legacy.scope';
9
9
  import { CFG_USER_EMAIL_KEY, CFG_USER_NAME_KEY, PREVIOUS_DEFAULT_LANE } from '@teambit/legacy.constants';
10
10
  import { ValidationError } from '@teambit/legacy.cli.error';
11
11
  import { logger } from '@teambit/legacy.logger';
12
12
  import { getStringifyArgs } from '@teambit/legacy.utils';
13
13
  import { sha1 } from '@teambit/toolbox.crypto.sha1';
14
14
  import { hasVersionByRef } from '@teambit/component.snap-distance';
15
- import { BitObject, Ref, Repository } from '../objects';
16
- import Version from './version';
15
+ import type { Repository } from '../objects';
16
+ import { BitObject, Ref } from '../objects';
17
+ import type Version from './version';
17
18
  import { getConfig } from '@teambit/config-store';
18
19
 
19
20
  export type Log = { date: string; username?: string; email?: string; profileImage?: string };
@@ -6,19 +6,20 @@ import { BitError } from '@teambit/bit-error';
6
6
  import { LaneId, DEFAULT_LANE } from '@teambit/lane-id';
7
7
  import { ComponentID, ComponentIdList } from '@teambit/component-id';
8
8
  import pMapSeries from 'p-map-series';
9
- import { LegacyComponentLog } from '@teambit/legacy-component-log';
9
+ import type { LegacyComponentLog } from '@teambit/legacy-component-log';
10
10
  import { findDuplications } from '@teambit/toolbox.array.duplications-finder';
11
11
  import { BitId } from '@teambit/legacy-bit-id';
12
12
  import { DEFAULT_BIT_RELEASE_TYPE, DEFAULT_BIT_VERSION, DEFAULT_LANGUAGE, Extensions } from '@teambit/legacy.constants';
13
- import { ConsumerComponent, SchemaName, Dependencies, Dependency } from '@teambit/legacy.consumer-component';
13
+ import type { Dependencies, Dependency } from '@teambit/legacy.consumer-component';
14
+ import { ConsumerComponent, SchemaName } from '@teambit/legacy.consumer-component';
14
15
  import { License, SourceFile, getRefsFromExtensions } from '@teambit/component.sources';
15
16
  import { ComponentOverrides, getBindingPrefixByDefaultScope } from '@teambit/legacy.consumer-config';
16
17
  import { ValidationError } from '@teambit/legacy.cli.error';
17
18
  import { logger } from '@teambit/legacy.logger';
18
19
  import { getStringifyArgs } from '@teambit/legacy.utils';
19
20
  import { getLatestVersion, validateVersion } from '@teambit/pkg.modules.semver-helper';
21
+ import type { SnapsDistance } from '@teambit/component.snap-distance';
20
22
  import {
21
- SnapsDistance,
22
23
  getDivergeData,
23
24
  getAllVersionParents,
24
25
  getAllVersionsInfo,
@@ -36,20 +37,21 @@ import {
36
37
  errorIsTypeOfMissingObject,
37
38
  BitIdCompIdError,
38
39
  } from '@teambit/legacy.scope';
39
- import { Repository, BitObject, Ref } from '../objects';
40
- import Lane from './lane';
40
+ import type { Repository } from '../objects';
41
+ import { BitObject, Ref } from '../objects';
42
+ import type Lane from './lane';
41
43
  import ScopeMeta from './scopeMeta';
42
- import Source from './source';
43
- import Version from './version';
44
- import VersionHistory, { VersionParents } from './version-history';
45
- import { ObjectItem } from '../objects/object-list';
44
+ import type Source from './source';
45
+ import type Version from './version';
46
+ import type { VersionParents } from './version-history';
47
+ import VersionHistory from './version-history';
48
+ import type { ObjectItem } from '../objects/object-list';
46
49
  import type { Scope } from '@teambit/legacy.scope';
47
- import { ExtensionDataList } from '@teambit/legacy.extension-data';
50
+ import type { ExtensionDataList } from '@teambit/legacy.extension-data';
48
51
  import { DetachedHeads } from './detach-heads';
49
52
 
50
53
  type State = {
51
54
  versions?: {
52
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
53
55
  [version: string]: {
54
56
  local?: boolean; // whether a component was changed locally
55
57
  };
@@ -98,7 +100,6 @@ export const VERSION_ZERO = '0.0.0';
98
100
  * with 'Component' in their headers. see object-registrar.types()
99
101
  */
100
102
  // TODO: FIX me .parser
101
- // @ts-ignore
102
103
  export default class Component extends BitObject {
103
104
  scope: string;
104
105
  name: string;
@@ -603,7 +604,6 @@ export default class Component extends BitObject {
603
604
  collectVersions(repo: Repository): Promise<ConsumerComponent[]> {
604
605
  return Promise.all(
605
606
  this.listVersions().map((versionNum) => {
606
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
607
607
  return this.toConsumerComponent(versionNum, this.scope, repo);
608
608
  })
609
609
  );
@@ -738,8 +738,8 @@ export default class Component extends BitObject {
738
738
  else
739
739
  throw new Error(`unable to add a new version for "${this.id()}" on main.
740
740
  this version started from an older version (${previouslyUsedVersion}), and not from the head (${head}).
741
- if this is done intentionally, please re-run with --detach-head (or --override-head if available).
742
- otherwise, please run "bit checkout head" to be up to date, then snap/tag your changes.`);
741
+ please run "bit checkout head" to be up to date, then snap/tag your changes.
742
+ if this is done intentionally, you can use --detach-head (or --override-head if available), but make sure you understand the implications as this is an experimental feature that may not be fully stable.`);
743
743
  } else {
744
744
  this.setHead(version.hash());
745
745
  this.detachedHeads.clearCurrent();
@@ -1086,7 +1086,6 @@ consider using --ignore-missing-artifacts flag if you're sure the artifacts are
1086
1086
  // @todo: this is weird. why the scopeMeta would be taken from the current scope and not he component scope?
1087
1087
  const scopeMetaP = scopeName ? ScopeMeta.fromScopeName(scopeName).load(repository) : Promise.resolve();
1088
1088
  const log = version.log || null;
1089
- // @ts-ignore
1090
1089
  const [files, scopeMeta] = await Promise.all([filesP, scopeMetaP]);
1091
1090
 
1092
1091
  const extensions = version.extensions.clone();
@@ -1206,6 +1205,27 @@ consider using --ignore-missing-artifacts flag if you're sure the artifacts are
1206
1205
  await this.setDivergeData(repo, undefined, undefined, workspaceId);
1207
1206
  const divergeData = this.getDivergeData();
1208
1207
  const localHashes = divergeData.snapsOnSourceOnly;
1208
+
1209
+ // When there's a detached head, divergeData only includes the detached head lineage.
1210
+ // We also need to include unexported versions from the main head lineage.
1211
+ const hasDetachedHead = this.detachedHeads && this.detachedHeads.getAllHeads().length > 0;
1212
+ if (hasDetachedHead && this.head) {
1213
+ // Calculate divergence from the main head as well
1214
+ const mainHeadDivergeData = await getDivergeData({
1215
+ repo,
1216
+ modelComponent: this,
1217
+ targetHead: (this.laneId ? this.calculatedRemoteHeadWhenOnLane : this.remoteHead) || null,
1218
+ sourceHead: this.head,
1219
+ throws: false,
1220
+ });
1221
+ // Add main head local versions that aren't already in localHashes
1222
+ for (const hash of mainHeadDivergeData.snapsOnSourceOnly) {
1223
+ if (!localHashes.find((h) => h.isEqual(hash))) {
1224
+ localHashes.push(hash);
1225
+ }
1226
+ }
1227
+ }
1228
+
1209
1229
  if (!localHashes.length) return [];
1210
1230
  return localHashes.reverse(); // reverse to get the older first
1211
1231
  }
@@ -1,6 +1,6 @@
1
1
  import { getStringifyArgs } from '@teambit/legacy.utils';
2
2
  import { BitObject } from '../objects';
3
- import Ref from '../objects/ref';
3
+ import type Ref from '../objects/ref';
4
4
 
5
5
  type ScopeMetaProps = {
6
6
  name: string;
@@ -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
@@ -1,7 +1,6 @@
1
1
  import { BitObject } from '../objects';
2
2
 
3
3
  // TODO: fix .parse
4
- // @ts-ignore
5
4
  export default class Source extends BitObject {
6
5
  contents: Buffer;
7
6
 
@@ -7,7 +7,7 @@ import Ref from '../objects/ref';
7
7
  import { BitObject } from '../objects';
8
8
  import type Version from './version';
9
9
  import { getVersionParentsFromVersion } from '@teambit/component.snap-distance';
10
- import ModelComponent from './model-component';
10
+ import type ModelComponent from './model-component';
11
11
 
12
12
  export type VersionParents = {
13
13
  hash: Ref;
@@ -67,21 +67,13 @@ describe('Version', () => {
67
67
  it('dependencies should be an array', () => {
68
68
  expect(dependencies).to.be.an('array').and.have.lengthOf(1);
69
69
  });
70
- it('dependencies should have properties id and relativePaths only', () => {
70
+ it('dependencies should have id property only (relativePaths removed)', () => {
71
71
  expect(dependencies[0]).to.haveOwnProperty('id');
72
- expect(dependencies[0]).to.haveOwnProperty('relativePaths');
72
+ expect(dependencies[0]).to.not.haveOwnProperty('relativePaths');
73
73
  expect(dependencies[0]).to.not.haveOwnProperty('nonExistProperty');
74
- expect(Object.keys(dependencies[0])).to.have.lengthOf(2);
75
- });
76
- it('relativePaths should be an array', () => {
77
- expect(dependencies[0].relativePaths).to.be.an('array').and.have.lengthOf(1);
78
- });
79
- it('relativePaths should have properties sourceRelativePath and destinationRelativePath only', () => {
80
- expect(dependencies[0].relativePaths[0]).to.haveOwnProperty('sourceRelativePath');
81
- expect(dependencies[0].relativePaths[0]).to.haveOwnProperty('destinationRelativePath');
82
- expect(dependencies[0].relativePaths[0]).to.not.haveOwnProperty('nonExistProperty');
83
- expect(Object.keys(dependencies[0].relativePaths[0])).to.have.lengthOf(2);
74
+ expect(Object.keys(dependencies[0])).to.have.lengthOf(1);
84
75
  });
76
+ // relativePaths tests removed - no longer included in Version.id() hash for Harmony components
85
77
  });
86
78
  });
87
79
  describe('hash()', () => {
package/models/version.ts CHANGED
@@ -3,24 +3,27 @@ import { isSnap } from '@teambit/component-version';
3
3
  import { ComponentID, ComponentIdList } from '@teambit/component-id';
4
4
  import { LaneId } from '@teambit/lane-id';
5
5
  import { v4 } from 'uuid';
6
- import { BuildStatus, DEFAULT_BUNDLE_FILENAME, Extensions } from '@teambit/legacy.constants';
6
+ import type { BuildStatus } from '@teambit/legacy.constants';
7
+ import { DEFAULT_BUNDLE_FILENAME, Extensions } from '@teambit/legacy.constants';
8
+ import type { ConsumerComponent } from '@teambit/legacy.consumer-component';
7
9
  import {
8
10
  isSchemaSupport,
9
11
  SchemaFeature,
10
12
  SchemaName,
11
13
  Dependencies,
12
14
  Dependency,
13
- ConsumerComponent,
14
15
  } from '@teambit/legacy.consumer-component';
15
16
  import { getRefsFromExtensions, SourceFile } from '@teambit/component.sources';
16
- import { ComponentOverridesData } from '@teambit/legacy.consumer-config';
17
+ import type { ComponentOverridesData } from '@teambit/legacy.consumer-config';
17
18
  import { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';
18
19
  import type { Doclet } from '@teambit/semantics.doc-parser';
19
20
  import { logger } from '@teambit/legacy.logger';
20
- import { getStringifyArgs, PathLinux, pathNormalizeToLinux } from '@teambit/legacy.utils';
21
+ import type { PathLinux } from '@teambit/legacy.utils';
22
+ import { getStringifyArgs, pathNormalizeToLinux } from '@teambit/legacy.utils';
21
23
  import { sha1 } from '@teambit/toolbox.crypto.sha1';
22
- import { BitObject, Ref, Repository } from '../objects';
23
- import { ObjectItem } from '../objects/object-list';
24
+ import type { Repository } from '../objects';
25
+ import { BitObject, Ref } from '../objects';
26
+ import type { ObjectItem } from '../objects/object-list';
24
27
  import { BitIdCompIdError, VersionInvalid, validateVersionInstance } from '@teambit/legacy.scope';
25
28
  import Source from './source';
26
29
  import { DependenciesGraph } from './dependencies-graph';
@@ -67,11 +70,8 @@ export type VersionProps = {
67
70
  flattenedEdges?: DepEdge[];
68
71
  flattenedEdgesRef?: Ref;
69
72
  dependenciesGraphRef?: Ref;
70
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
71
73
  packageDependencies?: { [key: string]: string };
72
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
73
74
  devPackageDependencies?: { [key: string]: string };
74
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
75
75
  peerPackageDependencies?: { [key: string]: string };
76
76
  bindingPrefix: string;
77
77
  schema?: string;
@@ -120,7 +120,6 @@ export default class Version extends BitObject {
120
120
  * (around August 2023 should be safe)
121
121
  */
122
122
  private flattenedEdges: DepEdge[];
123
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
124
123
  packageDependencies: { [key: string]: string };
125
124
  devPackageDependencies: { [key: string]: string };
126
125
  peerPackageDependencies: { [key: string]: string };
@@ -232,19 +231,11 @@ export default class Version extends BitObject {
232
231
  id() {
233
232
  const obj = this.toObject();
234
233
 
235
- // @todo: remove the entire dependencies.relativePaths from the ID (it's going to be a breaking change)
236
234
  const getDependencies = (deps: Dependencies) => {
237
235
  const clonedDependencies = deps.cloneAsString();
238
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
239
- return clonedDependencies.map((dependency: Dependency) => {
236
+ return clonedDependencies.map((dependency) => {
240
237
  return {
241
238
  id: dependency.id,
242
- relativePaths: dependency.relativePaths.map((relativePath) => {
243
- return {
244
- sourceRelativePath: relativePath.sourceRelativePath,
245
- destinationRelativePath: relativePath.destinationRelativePath,
246
- };
247
- }),
248
239
  };
249
240
  });
250
241
  };
@@ -697,7 +688,6 @@ export default class Version extends BitObject {
697
688
  files: files.map(parseFile),
698
689
  bindingPrefix: component.bindingPrefix,
699
690
  log: component.log as Log,
700
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
701
691
  docs: component.docs,
702
692
  dependencies: component.dependencies.get(),
703
693
  devDependencies: component.devDependencies.get(),
@@ -711,7 +701,6 @@ export default class Version extends BitObject {
711
701
  flattenedEdgesRef: flattenedEdges?.hash(),
712
702
  schema: component.schema,
713
703
  overrides: component.overrides.componentOverridesData,
714
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
715
704
  packageJsonChangedProps: component.packageJsonChangedProps,
716
705
  extensions: component.extensions,
717
706
  buildStatus: component.buildStatus,
@@ -1,4 +1,4 @@
1
- import BitObject from './object';
1
+ import type BitObject from './object';
2
2
  import { ExportMetadata, Lane, LaneHistory, ModelComponent, Version, VersionHistory } from '../models';
3
3
 
4
4
  export class BitObjectList {
@@ -1,8 +1,8 @@
1
1
  import { Graph, Node, Edge } from '@teambit/graph.cleargraph';
2
2
  import { uniqBy } from 'lodash';
3
- import { ComponentID } from '@teambit/component-id';
3
+ import type { ComponentID } from '@teambit/component-id';
4
4
  import type { ObjectList } from './object-list';
5
- import { BitObjectList } from './bit-object-list';
5
+ import type { BitObjectList } from './bit-object-list';
6
6
  import { getAllVersionsInfo } from '@teambit/component.snap-distance';
7
7
  import { Dependency } from '@teambit/graph';
8
8
 
@@ -2,6 +2,7 @@ import tarStream from 'tar-stream';
2
2
  import { pMapPool } from '@teambit/toolbox.promise.map-pool';
3
3
  import { compact } from 'lodash';
4
4
  import { Readable, PassThrough, pipeline } from 'stream';
5
+ import crypto from 'crypto';
5
6
  import BitObject from './object';
6
7
  import { BitObjectList } from './bit-object-list';
7
8
  import Ref from './ref';
@@ -52,6 +53,19 @@ export class ObjectList {
52
53
  return this.objects.length;
53
54
  }
54
55
 
56
+ /**
57
+ * Generates a SHA1 hash from all object buffers.
58
+ * Used to identify duplicate export requests during retries.
59
+ * Performance wise, it's not too bad. ~98ms for 150 components on CircleCI.
60
+ */
61
+ getSha1Hash(): string {
62
+ const hash = crypto.createHash('sha1');
63
+ for (const obj of this.objects) {
64
+ hash.update(new Uint8Array(obj.buffer));
65
+ }
66
+ return hash.digest('hex');
67
+ }
68
+
55
69
  static mergeMultipleInstances(objectLists: ObjectList[]): ObjectList {
56
70
  const objectList = new ObjectList();
57
71
  objectLists.forEach((objList) => objectList.mergeObjectList(objList));
package/objects/object.ts CHANGED
@@ -4,9 +4,9 @@ import { NULL_BYTE, SPACE_DELIMITER } from '@teambit/legacy.constants';
4
4
  import { deflate, inflate } from '@teambit/legacy.utils';
5
5
  import { sha1 } from '@teambit/toolbox.crypto.sha1';
6
6
  import { UnknownObjectType, typesObj as types } from '@teambit/legacy.scope';
7
- import { ObjectItem } from './object-list';
7
+ import type { ObjectItem } from './object-list';
8
8
  import Ref from './ref';
9
- import Repository from './repository';
9
+ import type Repository from './repository';
10
10
 
11
11
  function parse(buffer: Buffer): BitObject {
12
12
  const { type, hash, contents } = extractHeaderAndContent(buffer);
@@ -147,7 +147,6 @@ path: ${err.path}`);
147
147
  }
148
148
 
149
149
  static makeHash(str: string | Buffer): string {
150
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
151
150
  return sha1(str);
152
151
  }
153
152
  }
@@ -1,14 +1,14 @@
1
1
  import pMapSeries from 'p-map-series';
2
2
  import { BitError } from '@teambit/bit-error';
3
3
  import { Readable } from 'stream';
4
- import BitObject from './object';
5
- import Repository from './repository';
6
- import Ref from './ref';
7
- import { Scope } from '@teambit/legacy.scope';
4
+ import type BitObject from './object';
5
+ import type Repository from './repository';
6
+ import type Ref from './ref';
7
+ import type { Scope } from '@teambit/legacy.scope';
8
8
  import { logger } from '@teambit/legacy.logger';
9
9
  import { getAllVersionHashesMemoized } from '@teambit/component.snap-distance';
10
- import { Lane, LaneHistory, ModelComponent, Version } from '../models';
11
- import { ObjectItem } from './object-list';
10
+ import type { Lane, LaneHistory, ModelComponent, Version } from '../models';
11
+ import type { ObjectItem } from './object-list';
12
12
 
13
13
  export type ComponentWithCollectOptions = {
14
14
  component: ModelComponent;
@@ -1,14 +1,13 @@
1
1
  import { NULL_BYTE, SPACE_DELIMITER } from '@teambit/legacy.constants';
2
2
  import { getStringifyArgs, inflate } from '@teambit/legacy.utils';
3
3
  import { typesObj as types } from '@teambit/legacy.scope';
4
- import BitObject from './object';
4
+ import type BitObject from './object';
5
5
  import { clone } from 'lodash';
6
6
 
7
7
  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/ref.ts CHANGED
@@ -1,5 +1,5 @@
1
- import BitObject from './object';
2
- import Repository from './repository';
1
+ import type BitObject from './object';
2
+ import type Repository from './repository';
3
3
 
4
4
  export default class Ref {
5
5
  hash: string;