@teambit/objects 0.0.0-fd60f21b81b1095052d083af7129e5c40f5903a0 → 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 (47) hide show
  1. package/dist/models/export-metadata.js +0 -2
  2. package/dist/models/export-metadata.js.map +1 -1
  3. package/dist/models/lane.d.ts +3 -3
  4. package/dist/models/model-component.d.ts +1 -1
  5. package/dist/models/model-component.js +22 -5
  6. package/dist/models/model-component.js.map +1 -1
  7. package/dist/models/scopeMeta.js +0 -3
  8. package/dist/models/scopeMeta.js.map +1 -1
  9. package/dist/models/source.d.ts +2 -2
  10. package/dist/models/source.js +0 -1
  11. package/dist/models/source.js.map +1 -1
  12. package/dist/models/symlink.d.ts +1 -1
  13. package/dist/models/version.d.ts +3 -3
  14. package/dist/models/version.js +1 -13
  15. package/dist/models/version.js.map +1 -1
  16. package/dist/models/version.spec.js +4 -12
  17. package/dist/models/version.spec.js.map +1 -1
  18. package/dist/objects/object-list.d.ts +6 -0
  19. package/dist/objects/object-list.js +20 -0
  20. package/dist/objects/object-list.js.map +1 -1
  21. package/dist/objects/object.js +0 -1
  22. package/dist/objects/object.js.map +1 -1
  23. package/dist/objects/raw-object.d.ts +1 -1
  24. package/dist/objects/raw-object.js +1 -11
  25. package/dist/objects/raw-object.js.map +1 -1
  26. package/dist/objects/repository.d.ts +14 -1
  27. package/dist/objects/repository.js +23 -12
  28. package/dist/objects/repository.js.map +1 -1
  29. package/dist/objects/scope-index.js +0 -1
  30. package/dist/objects/scope-index.js.map +1 -1
  31. package/models/export-metadata.ts +0 -1
  32. package/models/model-component.ts +23 -6
  33. package/models/scopeMeta.ts +0 -2
  34. package/models/source.ts +0 -1
  35. package/models/version.spec.ts +4 -12
  36. package/models/version.ts +1 -15
  37. package/objects/object-list.ts +14 -0
  38. package/objects/object.ts +0 -1
  39. package/objects/raw-object.ts +1 -11
  40. package/objects/repository.ts +19 -6
  41. package/objects/scope-index.ts +0 -1
  42. package/package.json +29 -29
  43. package/dist/objects/repository-hooks.d.ts +0 -4
  44. package/dist/objects/repository-hooks.js +0 -56
  45. package/dist/objects/repository-hooks.js.map +0 -1
  46. package/objects/repository-hooks.ts +0 -42
  47. /package/dist/{preview-1754228637038.js → preview-1765762480694.js} +0 -0
@@ -17,6 +17,12 @@ export declare class ObjectList {
17
17
  objects: ObjectItem[];
18
18
  constructor(objects?: ObjectItem[]);
19
19
  count(): number;
20
+ /**
21
+ * Generates a SHA1 hash from all object buffers.
22
+ * Used to identify duplicate export requests during retries.
23
+ * Performance wise, it's not too bad. ~98ms for 150 components on CircleCI.
24
+ */
25
+ getSha1Hash(): string;
20
26
  static mergeMultipleInstances(objectLists: ObjectList[]): ObjectList;
21
27
  mergeObjectList(objectList: ObjectList): void;
22
28
  static fromJsonString(jsonStr: string): ObjectList;
@@ -32,6 +32,13 @@ function _stream() {
32
32
  };
33
33
  return data;
34
34
  }
35
+ function _crypto() {
36
+ const data = _interopRequireDefault(require("crypto"));
37
+ _crypto = function () {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
35
42
  function _object() {
36
43
  const data = _interopRequireDefault(require("./object"));
37
44
  _object = function () {
@@ -111,6 +118,19 @@ class ObjectList {
111
118
  count() {
112
119
  return this.objects.length;
113
120
  }
121
+
122
+ /**
123
+ * Generates a SHA1 hash from all object buffers.
124
+ * Used to identify duplicate export requests during retries.
125
+ * Performance wise, it's not too bad. ~98ms for 150 components on CircleCI.
126
+ */
127
+ getSha1Hash() {
128
+ const hash = _crypto().default.createHash('sha1');
129
+ for (const obj of this.objects) {
130
+ hash.update(new Uint8Array(obj.buffer));
131
+ }
132
+ return hash.digest('hex');
133
+ }
114
134
  static mergeMultipleInstances(objectLists) {
115
135
  const objectList = new ObjectList();
116
136
  objectLists.forEach(objList => objectList.mergeObjectList(objList));
@@ -1 +1 @@
1
- {"version":3,"names":["_tarStream","data","_interopRequireDefault","require","_toolboxPromise","_lodash","_stream","_object","_bitObjectList","_ref","_legacy","_harmonyModules","_models","_legacy2","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TAR_STREAM_ERROR_FILENAME","OBJECT_LIST_CURRENT_SCHEMA","TAR_STREAM_START_FILENAME","TAR_STREAM_END_FILENAME","FETCH_FORMAT_OBJECT_LIST","exports","ObjectList","constructor","objects","count","mergeMultipleInstances","objectLists","objectList","objList","mergeObjectList","addIfNotExist","fromJsonString","jsonStr","jsonParsed","JSON","parse","Array","isArray","Error","obj","ref","Ref","hash","buffer","Buffer","from","toJsonString","stringify","toTar","pack","tarStream","entry","name","combineScopeAndHash","finalize","toReadableStream","Readable","fromTar","packStream","extract","objectItems","Promise","resolve","reject","on","header","stream","next","chunk","extractScopeAndHash","concat","err","resume","pipe","fromTarToObjectStream","passThrough","PassThrough","objectMode","startData","endData","allData","emit","toString","logger","debug","write","schema","end","pipeline","error","fromObjectStreamToTar","readable","scopeName","startFile","numOfFiles","endFile","errorMessage","message","fromReadableStream","nameSplit","split","hasScope","scope","undefined","objectItem","exists","find","object","isEqual","toBitObjects","throwForUnknownTypes","concurrency","concurrentIOLimit","bitObjects","pMapPool","BitObject","parseObject","UnknownObjectType","type","BitObjectList","compact","fromBitObjects","compress","getType","addScopeName","splitByScopeName","objectListPerScope","ExportMetadata","toConsoleLog","console","log","map","join"],"sources":["object-list.ts"],"sourcesContent":["import tarStream from 'tar-stream';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { compact } from 'lodash';\nimport { Readable, PassThrough, pipeline } from 'stream';\nimport BitObject from './object';\nimport { BitObjectList } from './bit-object-list';\nimport Ref from './ref';\nimport { logger } from '@teambit/legacy.logger';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport { ExportMetadata } from '../models';\nimport { UnknownObjectType } from '@teambit/legacy.scope';\n\n/**\n * when error occurred during streaming between HTTP server and client, there is no good way to\n * indicate this other than sending a new file with a special name and the error message.\n */\nconst TAR_STREAM_ERROR_FILENAME = '.BIT.ERROR';\n/**\n * schema 1.0.0 - added the start and end file with basic info\n */\nconst OBJECT_LIST_CURRENT_SCHEMA = '1.0.0';\nconst TAR_STREAM_START_FILENAME = '.BIT.START';\nconst TAR_STREAM_END_FILENAME = '.BIT.END';\n\ntype StartFile = {\n schema: string;\n scopeName: string;\n};\ntype EndFile = {\n numOfFiles: number;\n scopeName: string;\n};\n\nexport type ObjectItem = {\n ref: Ref;\n buffer: Buffer; // zlib deflated BitObject\n type?: string; // for future use. e.g. to be able to export only Component/Version types but not Source/Artifact, etc.\n scope?: string; // used for the export process\n};\n\nexport const FETCH_FORMAT_OBJECT_LIST = 'ObjectList';\n\n/**\n * Stream.Readable that operates with objectMode, while each 'data' event emits one ObjectItem object.\n */\nexport type ObjectItemsStream = Readable;\n\nexport class ObjectList {\n constructor(public objects: ObjectItem[] = []) {}\n\n count() {\n return this.objects.length;\n }\n\n static mergeMultipleInstances(objectLists: ObjectList[]): ObjectList {\n const objectList = new ObjectList();\n objectLists.forEach((objList) => objectList.mergeObjectList(objList));\n return objectList;\n }\n mergeObjectList(objectList: ObjectList) {\n this.addIfNotExist(objectList.objects);\n }\n static fromJsonString(jsonStr: string): ObjectList {\n const jsonParsed = JSON.parse(jsonStr);\n if (!Array.isArray(jsonParsed)) {\n throw new Error(`fromJsonString expect an array, got ${typeof jsonParsed}`);\n }\n jsonParsed.forEach((obj) => {\n obj.ref = new Ref(obj.ref.hash);\n obj.buffer = Buffer.from(obj.buffer);\n });\n return new ObjectList(jsonParsed);\n }\n toJsonString(): string {\n return JSON.stringify(this.objects);\n }\n toTar(): NodeJS.ReadableStream {\n const pack = tarStream.pack();\n this.objects.forEach((obj) => {\n pack.entry({ name: ObjectList.combineScopeAndHash(obj) }, obj.buffer);\n });\n pack.finalize();\n return pack;\n }\n toReadableStream(): ObjectItemsStream {\n return Readable.from(this.objects);\n }\n static async fromTar(packStream: NodeJS.ReadableStream): Promise<ObjectList> {\n const extract = tarStream.extract();\n const objectItems: ObjectItem[] = await new Promise((resolve, reject) => {\n const objects: ObjectItem[] = [];\n extract.on('entry', (header, stream, next) => {\n const data: Buffer[] = [];\n stream.on('data', (chunk) => {\n data.push(chunk);\n });\n stream.on('end', () => {\n objects.push({\n ...ObjectList.extractScopeAndHash(header.name),\n buffer: Buffer.concat(data as unknown as Uint8Array[]),\n });\n next(); // ready for next entry\n });\n stream.on('error', (err) => reject(err));\n\n stream.resume(); // just auto drain the stream\n });\n\n extract.on('finish', () => {\n resolve(objects);\n });\n\n packStream.pipe(extract);\n });\n return new ObjectList(objectItems);\n }\n\n static fromTarToObjectStream(packStream: NodeJS.ReadableStream): ObjectItemsStream {\n const passThrough = new PassThrough({ objectMode: true });\n const extract = tarStream.extract();\n let startData: StartFile | undefined;\n let endData: EndFile | undefined;\n extract.on('entry', (header, stream, next) => {\n const data: Buffer[] = [];\n stream.on('data', (chunk) => {\n data.push(chunk);\n });\n stream.on('end', () => {\n const allData = Buffer.concat(data as unknown as Uint8Array[]);\n if (header.name === TAR_STREAM_ERROR_FILENAME) {\n passThrough.emit('error', new Error(allData.toString()));\n return;\n }\n if (header.name === TAR_STREAM_START_FILENAME) {\n startData = JSON.parse(allData.toString());\n logger.debug('fromTarToObjectStream, start getting data', startData);\n next();\n return;\n }\n if (header.name === TAR_STREAM_END_FILENAME) {\n endData = JSON.parse(allData.toString());\n logger.debug('fromTarToObjectStream, finished getting data', endData);\n next();\n return;\n }\n passThrough.write({ ...ObjectList.extractScopeAndHash(header.name), buffer: allData });\n next(); // ready for next entry\n });\n stream.on('error', (err) => {\n passThrough.emit('error', err);\n });\n\n stream.resume(); // just auto drain the stream\n });\n\n // not sure if needed\n extract.on('error', (err) => {\n passThrough.emit('error', err);\n });\n\n extract.on('finish', () => {\n if (startData?.schema === OBJECT_LIST_CURRENT_SCHEMA && !endData) {\n // wasn't able to find a better way to indicate whether the server aborted the request\n // see https://github.com/node-fetch/node-fetch/issues/1117\n passThrough.emit(\n 'error',\n new Error(`server terminated the stream unexpectedly (metadata: ${JSON.stringify(startData)})`)\n );\n }\n passThrough.end();\n });\n pipeline(packStream, extract, (err) => {\n if (err) {\n logger.error('fromTarToObjectStream, pipeline', err);\n passThrough.emit('error', err);\n } else {\n logger.debug('fromTarToObjectStream, pipeline is completed');\n }\n });\n\n return passThrough;\n }\n\n static fromObjectStreamToTar(readable: Readable, scopeName: string) {\n const pack = tarStream.pack();\n const startFile: StartFile = { schema: OBJECT_LIST_CURRENT_SCHEMA, scopeName };\n logger.debug('fromObjectStreamToTar, start sending data', startFile);\n pack.entry({ name: TAR_STREAM_START_FILENAME }, JSON.stringify(startFile));\n let numOfFiles = 0;\n readable.on('data', (obj: ObjectItem) => {\n numOfFiles += 1;\n pack.entry({ name: ObjectList.combineScopeAndHash(obj) }, obj.buffer);\n });\n readable.on('end', () => {\n const endFile: EndFile = { numOfFiles, scopeName };\n logger.debug('fromObjectStreamToTar, finished sending data', endFile);\n pack.entry({ name: TAR_STREAM_END_FILENAME }, JSON.stringify(endFile));\n pack.finalize();\n });\n readable.on('error', (err) => {\n const errorMessage = err.message || `unexpected error (${err.name})`;\n logger.error(`ObjectList.fromObjectStreamToTar, streaming an error as a file`, err);\n pack.entry({ name: TAR_STREAM_ERROR_FILENAME }, errorMessage);\n pack.finalize();\n });\n return pack;\n }\n\n static async fromReadableStream(readable: ObjectItemsStream): Promise<ObjectList> {\n const objectItems: ObjectItem[] = [];\n for await (const obj of readable) {\n objectItems.push(obj);\n }\n return new ObjectList(objectItems);\n }\n\n /**\n * the opposite of this.combineScopeAndHash\n */\n static extractScopeAndHash(name: string): { scope?: string; ref: Ref } {\n const nameSplit = name.split('/');\n const hasScope = nameSplit.length > 1;\n return {\n scope: hasScope ? nameSplit[0] : undefined,\n ref: new Ref(hasScope ? nameSplit[1] : nameSplit[0]),\n };\n }\n /**\n * the opposite of this.extractScopeAndHash\n */\n static combineScopeAndHash(objectItem: ObjectItem): string {\n const scope = objectItem.scope ? `${objectItem.scope}/` : '';\n return `${scope}${objectItem.ref.hash}`;\n }\n\n addIfNotExist(objectItems: ObjectItem[]) {\n objectItems.forEach((objectItem) => {\n const exists = this.objects.find(\n (object) => object.ref.isEqual(objectItem.ref) && object.scope === objectItem.scope\n );\n if (!exists) {\n this.objects.push(objectItem);\n }\n });\n }\n\n async toBitObjects(throwForUnknownTypes = false): Promise<BitObjectList> {\n const concurrency = concurrentIOLimit();\n const bitObjects = await pMapPool(\n this.objects,\n async (object) => {\n try {\n return await BitObject.parseObject(object.buffer);\n } catch (err) {\n if (throwForUnknownTypes || !(err instanceof UnknownObjectType)) {\n throw err;\n }\n logger.error(\n `toBitObjects, unable to parse object of type ${err.type}, ignoring it. please update your bit version`\n );\n return null;\n }\n },\n { concurrency }\n );\n return new BitObjectList(compact(bitObjects));\n }\n\n static async fromBitObjects(bitObjects: BitObject[]): Promise<ObjectList> {\n const concurrency = concurrentIOLimit();\n const objectItems = await pMapPool(\n bitObjects,\n async (obj) => ({\n ref: obj.hash(),\n buffer: await obj.compress(),\n type: obj.getType(),\n }),\n { concurrency }\n );\n return new ObjectList(objectItems);\n }\n\n addScopeName(scopeName: string) {\n this.objects.forEach((object) => {\n object.scope = scopeName;\n });\n }\n\n splitByScopeName(): { [scopeName: string]: ObjectList } {\n const objectListPerScope: { [scopeName: string]: ObjectList } = {};\n this.objects.forEach((obj) => {\n if (obj.type === ExportMetadata.name) {\n return; // no scope for this type. it's general for all export data from all scopes\n }\n if (!obj.scope) {\n throw new Error(`ObjectList: unable to split by scopeName, the scopeName is missing for ${obj.ref.hash}`);\n }\n if (objectListPerScope[obj.scope]) {\n objectListPerScope[obj.scope].addIfNotExist([obj]);\n } else {\n objectListPerScope[obj.scope] = new ObjectList([obj]);\n }\n });\n return objectListPerScope;\n }\n\n /**\n * helps debugging\n */\n toConsoleLog() {\n console.log(this.objects.map((o) => o.ref.hash).join('\\n')); // eslint-disable-line no-console\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_tarStream","data","_interopRequireDefault","require","_toolboxPromise","_lodash","_stream","_crypto","_object","_bitObjectList","_ref","_legacy","_harmonyModules","_models","_legacy2","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TAR_STREAM_ERROR_FILENAME","OBJECT_LIST_CURRENT_SCHEMA","TAR_STREAM_START_FILENAME","TAR_STREAM_END_FILENAME","FETCH_FORMAT_OBJECT_LIST","exports","ObjectList","constructor","objects","count","getSha1Hash","hash","crypto","createHash","obj","update","Uint8Array","buffer","digest","mergeMultipleInstances","objectLists","objectList","objList","mergeObjectList","addIfNotExist","fromJsonString","jsonStr","jsonParsed","JSON","parse","Array","isArray","Error","ref","Ref","Buffer","from","toJsonString","stringify","toTar","pack","tarStream","entry","name","combineScopeAndHash","finalize","toReadableStream","Readable","fromTar","packStream","extract","objectItems","Promise","resolve","reject","on","header","stream","next","chunk","extractScopeAndHash","concat","err","resume","pipe","fromTarToObjectStream","passThrough","PassThrough","objectMode","startData","endData","allData","emit","toString","logger","debug","write","schema","end","pipeline","error","fromObjectStreamToTar","readable","scopeName","startFile","numOfFiles","endFile","errorMessage","message","fromReadableStream","nameSplit","split","hasScope","scope","undefined","objectItem","exists","find","object","isEqual","toBitObjects","throwForUnknownTypes","concurrency","concurrentIOLimit","bitObjects","pMapPool","BitObject","parseObject","UnknownObjectType","type","BitObjectList","compact","fromBitObjects","compress","getType","addScopeName","splitByScopeName","objectListPerScope","ExportMetadata","toConsoleLog","console","log","map","join"],"sources":["object-list.ts"],"sourcesContent":["import tarStream from 'tar-stream';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { compact } from 'lodash';\nimport { Readable, PassThrough, pipeline } from 'stream';\nimport crypto from 'crypto';\nimport BitObject from './object';\nimport { BitObjectList } from './bit-object-list';\nimport Ref from './ref';\nimport { logger } from '@teambit/legacy.logger';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport { ExportMetadata } from '../models';\nimport { UnknownObjectType } from '@teambit/legacy.scope';\n\n/**\n * when error occurred during streaming between HTTP server and client, there is no good way to\n * indicate this other than sending a new file with a special name and the error message.\n */\nconst TAR_STREAM_ERROR_FILENAME = '.BIT.ERROR';\n/**\n * schema 1.0.0 - added the start and end file with basic info\n */\nconst OBJECT_LIST_CURRENT_SCHEMA = '1.0.0';\nconst TAR_STREAM_START_FILENAME = '.BIT.START';\nconst TAR_STREAM_END_FILENAME = '.BIT.END';\n\ntype StartFile = {\n schema: string;\n scopeName: string;\n};\ntype EndFile = {\n numOfFiles: number;\n scopeName: string;\n};\n\nexport type ObjectItem = {\n ref: Ref;\n buffer: Buffer; // zlib deflated BitObject\n type?: string; // for future use. e.g. to be able to export only Component/Version types but not Source/Artifact, etc.\n scope?: string; // used for the export process\n};\n\nexport const FETCH_FORMAT_OBJECT_LIST = 'ObjectList';\n\n/**\n * Stream.Readable that operates with objectMode, while each 'data' event emits one ObjectItem object.\n */\nexport type ObjectItemsStream = Readable;\n\nexport class ObjectList {\n constructor(public objects: ObjectItem[] = []) {}\n\n count() {\n return this.objects.length;\n }\n\n /**\n * Generates a SHA1 hash from all object buffers.\n * Used to identify duplicate export requests during retries.\n * Performance wise, it's not too bad. ~98ms for 150 components on CircleCI.\n */\n getSha1Hash(): string {\n const hash = crypto.createHash('sha1');\n for (const obj of this.objects) {\n hash.update(new Uint8Array(obj.buffer));\n }\n return hash.digest('hex');\n }\n\n static mergeMultipleInstances(objectLists: ObjectList[]): ObjectList {\n const objectList = new ObjectList();\n objectLists.forEach((objList) => objectList.mergeObjectList(objList));\n return objectList;\n }\n mergeObjectList(objectList: ObjectList) {\n this.addIfNotExist(objectList.objects);\n }\n static fromJsonString(jsonStr: string): ObjectList {\n const jsonParsed = JSON.parse(jsonStr);\n if (!Array.isArray(jsonParsed)) {\n throw new Error(`fromJsonString expect an array, got ${typeof jsonParsed}`);\n }\n jsonParsed.forEach((obj) => {\n obj.ref = new Ref(obj.ref.hash);\n obj.buffer = Buffer.from(obj.buffer);\n });\n return new ObjectList(jsonParsed);\n }\n toJsonString(): string {\n return JSON.stringify(this.objects);\n }\n toTar(): NodeJS.ReadableStream {\n const pack = tarStream.pack();\n this.objects.forEach((obj) => {\n pack.entry({ name: ObjectList.combineScopeAndHash(obj) }, obj.buffer);\n });\n pack.finalize();\n return pack;\n }\n toReadableStream(): ObjectItemsStream {\n return Readable.from(this.objects);\n }\n static async fromTar(packStream: NodeJS.ReadableStream): Promise<ObjectList> {\n const extract = tarStream.extract();\n const objectItems: ObjectItem[] = await new Promise((resolve, reject) => {\n const objects: ObjectItem[] = [];\n extract.on('entry', (header, stream, next) => {\n const data: Buffer[] = [];\n stream.on('data', (chunk) => {\n data.push(chunk);\n });\n stream.on('end', () => {\n objects.push({\n ...ObjectList.extractScopeAndHash(header.name),\n buffer: Buffer.concat(data as unknown as Uint8Array[]),\n });\n next(); // ready for next entry\n });\n stream.on('error', (err) => reject(err));\n\n stream.resume(); // just auto drain the stream\n });\n\n extract.on('finish', () => {\n resolve(objects);\n });\n\n packStream.pipe(extract);\n });\n return new ObjectList(objectItems);\n }\n\n static fromTarToObjectStream(packStream: NodeJS.ReadableStream): ObjectItemsStream {\n const passThrough = new PassThrough({ objectMode: true });\n const extract = tarStream.extract();\n let startData: StartFile | undefined;\n let endData: EndFile | undefined;\n extract.on('entry', (header, stream, next) => {\n const data: Buffer[] = [];\n stream.on('data', (chunk) => {\n data.push(chunk);\n });\n stream.on('end', () => {\n const allData = Buffer.concat(data as unknown as Uint8Array[]);\n if (header.name === TAR_STREAM_ERROR_FILENAME) {\n passThrough.emit('error', new Error(allData.toString()));\n return;\n }\n if (header.name === TAR_STREAM_START_FILENAME) {\n startData = JSON.parse(allData.toString());\n logger.debug('fromTarToObjectStream, start getting data', startData);\n next();\n return;\n }\n if (header.name === TAR_STREAM_END_FILENAME) {\n endData = JSON.parse(allData.toString());\n logger.debug('fromTarToObjectStream, finished getting data', endData);\n next();\n return;\n }\n passThrough.write({ ...ObjectList.extractScopeAndHash(header.name), buffer: allData });\n next(); // ready for next entry\n });\n stream.on('error', (err) => {\n passThrough.emit('error', err);\n });\n\n stream.resume(); // just auto drain the stream\n });\n\n // not sure if needed\n extract.on('error', (err) => {\n passThrough.emit('error', err);\n });\n\n extract.on('finish', () => {\n if (startData?.schema === OBJECT_LIST_CURRENT_SCHEMA && !endData) {\n // wasn't able to find a better way to indicate whether the server aborted the request\n // see https://github.com/node-fetch/node-fetch/issues/1117\n passThrough.emit(\n 'error',\n new Error(`server terminated the stream unexpectedly (metadata: ${JSON.stringify(startData)})`)\n );\n }\n passThrough.end();\n });\n pipeline(packStream, extract, (err) => {\n if (err) {\n logger.error('fromTarToObjectStream, pipeline', err);\n passThrough.emit('error', err);\n } else {\n logger.debug('fromTarToObjectStream, pipeline is completed');\n }\n });\n\n return passThrough;\n }\n\n static fromObjectStreamToTar(readable: Readable, scopeName: string) {\n const pack = tarStream.pack();\n const startFile: StartFile = { schema: OBJECT_LIST_CURRENT_SCHEMA, scopeName };\n logger.debug('fromObjectStreamToTar, start sending data', startFile);\n pack.entry({ name: TAR_STREAM_START_FILENAME }, JSON.stringify(startFile));\n let numOfFiles = 0;\n readable.on('data', (obj: ObjectItem) => {\n numOfFiles += 1;\n pack.entry({ name: ObjectList.combineScopeAndHash(obj) }, obj.buffer);\n });\n readable.on('end', () => {\n const endFile: EndFile = { numOfFiles, scopeName };\n logger.debug('fromObjectStreamToTar, finished sending data', endFile);\n pack.entry({ name: TAR_STREAM_END_FILENAME }, JSON.stringify(endFile));\n pack.finalize();\n });\n readable.on('error', (err) => {\n const errorMessage = err.message || `unexpected error (${err.name})`;\n logger.error(`ObjectList.fromObjectStreamToTar, streaming an error as a file`, err);\n pack.entry({ name: TAR_STREAM_ERROR_FILENAME }, errorMessage);\n pack.finalize();\n });\n return pack;\n }\n\n static async fromReadableStream(readable: ObjectItemsStream): Promise<ObjectList> {\n const objectItems: ObjectItem[] = [];\n for await (const obj of readable) {\n objectItems.push(obj);\n }\n return new ObjectList(objectItems);\n }\n\n /**\n * the opposite of this.combineScopeAndHash\n */\n static extractScopeAndHash(name: string): { scope?: string; ref: Ref } {\n const nameSplit = name.split('/');\n const hasScope = nameSplit.length > 1;\n return {\n scope: hasScope ? nameSplit[0] : undefined,\n ref: new Ref(hasScope ? nameSplit[1] : nameSplit[0]),\n };\n }\n /**\n * the opposite of this.extractScopeAndHash\n */\n static combineScopeAndHash(objectItem: ObjectItem): string {\n const scope = objectItem.scope ? `${objectItem.scope}/` : '';\n return `${scope}${objectItem.ref.hash}`;\n }\n\n addIfNotExist(objectItems: ObjectItem[]) {\n objectItems.forEach((objectItem) => {\n const exists = this.objects.find(\n (object) => object.ref.isEqual(objectItem.ref) && object.scope === objectItem.scope\n );\n if (!exists) {\n this.objects.push(objectItem);\n }\n });\n }\n\n async toBitObjects(throwForUnknownTypes = false): Promise<BitObjectList> {\n const concurrency = concurrentIOLimit();\n const bitObjects = await pMapPool(\n this.objects,\n async (object) => {\n try {\n return await BitObject.parseObject(object.buffer);\n } catch (err) {\n if (throwForUnknownTypes || !(err instanceof UnknownObjectType)) {\n throw err;\n }\n logger.error(\n `toBitObjects, unable to parse object of type ${err.type}, ignoring it. please update your bit version`\n );\n return null;\n }\n },\n { concurrency }\n );\n return new BitObjectList(compact(bitObjects));\n }\n\n static async fromBitObjects(bitObjects: BitObject[]): Promise<ObjectList> {\n const concurrency = concurrentIOLimit();\n const objectItems = await pMapPool(\n bitObjects,\n async (obj) => ({\n ref: obj.hash(),\n buffer: await obj.compress(),\n type: obj.getType(),\n }),\n { concurrency }\n );\n return new ObjectList(objectItems);\n }\n\n addScopeName(scopeName: string) {\n this.objects.forEach((object) => {\n object.scope = scopeName;\n });\n }\n\n splitByScopeName(): { [scopeName: string]: ObjectList } {\n const objectListPerScope: { [scopeName: string]: ObjectList } = {};\n this.objects.forEach((obj) => {\n if (obj.type === ExportMetadata.name) {\n return; // no scope for this type. it's general for all export data from all scopes\n }\n if (!obj.scope) {\n throw new Error(`ObjectList: unable to split by scopeName, the scopeName is missing for ${obj.ref.hash}`);\n }\n if (objectListPerScope[obj.scope]) {\n objectListPerScope[obj.scope].addIfNotExist([obj]);\n } else {\n objectListPerScope[obj.scope] = new ObjectList([obj]);\n }\n });\n return objectListPerScope;\n }\n\n /**\n * helps debugging\n */\n toConsoleLog() {\n console.log(this.objects.map((o) => o.ref.hash).join('\\n')); // eslint-disable-line no-console\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -181,7 +181,6 @@ path: ${err.path}`);
181
181
  return parse(buffer);
182
182
  }
183
183
  static makeHash(str) {
184
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
185
184
  return (0, _toolboxCrypto().sha1)(str);
186
185
  }
187
186
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_zlib","data","require","_legacy","_legacy2","_toolboxCrypto","_legacy3","_ref","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","parse","buffer","type","hash","contents","extractHeaderAndContent","types","UnknownObjectType","firstNullByteLocation","indexOf","NULL_BYTE","headers","slice","toString","split","SPACE_DELIMITER","length","BitObject","constructor","id","Error","toBuffer","pretty","refs","getType","name","getHeader","collectRefs","repo","refsCollection","objectType","objectId","addRefs","object","objs","Promise","all","map","ref","load","err","code","path","push","obj","collectRaw","loadManyRaw","asRaw","loadRaw","collect","objects","loadSync","forEach","Ref","makeHash","compress","deflate","serialize","Buffer","concat","from","parseObject","fileContents","filePath","inflate","parseObjectOnlyIfType","typeNames","includes","parseSync","inflateSync","str","sha1","exports"],"sources":["object.ts"],"sourcesContent":["import { inflateSync } from 'zlib';\n\nimport { NULL_BYTE, SPACE_DELIMITER } from '@teambit/legacy.constants';\nimport { deflate, inflate } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport { UnknownObjectType, typesObj as types } from '@teambit/legacy.scope';\nimport type { ObjectItem } from './object-list';\nimport Ref from './ref';\nimport type Repository from './repository';\n\nfunction parse(buffer: Buffer): BitObject {\n const { type, hash, contents } = extractHeaderAndContent(buffer);\n if (!types[type]) throw new UnknownObjectType(type);\n return types[type].parse(contents, hash);\n}\n\nfunction extractHeaderAndContent(buffer: Buffer): { type: string; hash: string; contents: Buffer } {\n const firstNullByteLocation = buffer.indexOf(NULL_BYTE);\n const headers = buffer.slice(0, firstNullByteLocation).toString();\n const [type, hash] = headers.split(SPACE_DELIMITER);\n const contents = buffer.slice(firstNullByteLocation + 1, buffer.length);\n return { type, hash, contents };\n}\n\nexport default class BitObject {\n validateBeforePersist = true; // validate the object before persisting\n id(): string | Buffer {\n throw new Error('id() was not implemented...');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n toBuffer(pretty?: boolean): Buffer {\n throw new Error('toBuffer() was not implemented...');\n }\n\n refs(): Ref[] {\n return [];\n }\n\n getType(): string {\n return this.constructor.name;\n }\n\n getHeader(buffer: Buffer): string {\n return `${this.getType()} ${this.hash().toString()} ${buffer.toString().length}${NULL_BYTE}`;\n }\n\n async collectRefs(repo: Repository): Promise<Ref[]> {\n const refsCollection = [];\n const objectType = this.getType();\n const objectId = objectType === 'Component' ? `Component ${this.id()}` : objectType;\n\n async function addRefs(object: BitObject) {\n const refs = object.refs();\n let objs;\n try {\n objs = await Promise.all(refs.map((ref) => ref.load(repo, true)));\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(`failed finding an object file required by ${object.constructor.name} object, originated from ${objectId}\npath: ${err.path}`);\n }\n throw err;\n }\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n refsCollection.push(...refs);\n await Promise.all(objs.map((obj) => addRefs(obj)));\n }\n\n await addRefs(this);\n return refsCollection;\n }\n\n async collectRaw(repo: Repository): Promise<ObjectItem[]> {\n const refs = await this.collectRefs(repo);\n return repo.loadManyRaw(refs);\n }\n\n asRaw(repo: Repository): Promise<Buffer> {\n return repo.loadRaw(this.hash());\n }\n\n collect(repo: Repository): BitObject[] {\n const objects: BitObject[] = [];\n\n function addRefs(object: BitObject) {\n const objs = object.refs().map((ref) => {\n return ref.loadSync(repo);\n });\n\n objects.push(...objs);\n objs.forEach((obj) => addRefs(obj));\n }\n\n addRefs(this);\n return objects;\n }\n\n /**\n * indexing method\n */\n hash(): Ref {\n // console.log(`sha ${sha1(this.id())}, id ${this.id()}`); // uncomment when debugging hash issues\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n compress(): Promise<Buffer> {\n return deflate(this.serialize());\n }\n\n serialize(): Buffer {\n const buffer = this.toBuffer();\n return Buffer.concat([Buffer.from(this.getHeader(buffer)), buffer] as unknown as Uint8Array[]);\n }\n\n /**\n * see `this.parseSync` for the sync version\n */\n static async parseObject(fileContents: Buffer, filePath?: string): Promise<BitObject> {\n const buffer = await inflate(fileContents, filePath);\n return parse(buffer);\n }\n\n /**\n * same as `parseObject`, however, if the type is not one of the given \"typeNames\", it returns null.\n * the performance improvement is huge compare to \"parseObject\", as it doesn't parse the object if not needed.\n */\n static async parseObjectOnlyIfType(\n fileContents: Buffer,\n typeNames: string[],\n filePath?: string\n ): Promise<BitObject | null> {\n const buffer = await inflate(fileContents, filePath);\n const { type } = extractHeaderAndContent(buffer);\n if (typeNames.includes(type)) return parse(buffer);\n return null;\n }\n\n /**\n * prefer using `this.parseObject()`, unless it must be sync.\n */\n static parseSync(fileContents: Buffer): BitObject {\n // @ts-ignore todo: fix after merging #9359\n const buffer = inflateSync(fileContents);\n return parse(buffer);\n }\n\n static makeHash(str: string | Buffer): string {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return sha1(str);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_zlib","data","require","_legacy","_legacy2","_toolboxCrypto","_legacy3","_ref","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","parse","buffer","type","hash","contents","extractHeaderAndContent","types","UnknownObjectType","firstNullByteLocation","indexOf","NULL_BYTE","headers","slice","toString","split","SPACE_DELIMITER","length","BitObject","constructor","id","Error","toBuffer","pretty","refs","getType","name","getHeader","collectRefs","repo","refsCollection","objectType","objectId","addRefs","object","objs","Promise","all","map","ref","load","err","code","path","push","obj","collectRaw","loadManyRaw","asRaw","loadRaw","collect","objects","loadSync","forEach","Ref","makeHash","compress","deflate","serialize","Buffer","concat","from","parseObject","fileContents","filePath","inflate","parseObjectOnlyIfType","typeNames","includes","parseSync","inflateSync","str","sha1","exports"],"sources":["object.ts"],"sourcesContent":["import { inflateSync } from 'zlib';\n\nimport { NULL_BYTE, SPACE_DELIMITER } from '@teambit/legacy.constants';\nimport { deflate, inflate } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport { UnknownObjectType, typesObj as types } from '@teambit/legacy.scope';\nimport type { ObjectItem } from './object-list';\nimport Ref from './ref';\nimport type Repository from './repository';\n\nfunction parse(buffer: Buffer): BitObject {\n const { type, hash, contents } = extractHeaderAndContent(buffer);\n if (!types[type]) throw new UnknownObjectType(type);\n return types[type].parse(contents, hash);\n}\n\nfunction extractHeaderAndContent(buffer: Buffer): { type: string; hash: string; contents: Buffer } {\n const firstNullByteLocation = buffer.indexOf(NULL_BYTE);\n const headers = buffer.slice(0, firstNullByteLocation).toString();\n const [type, hash] = headers.split(SPACE_DELIMITER);\n const contents = buffer.slice(firstNullByteLocation + 1, buffer.length);\n return { type, hash, contents };\n}\n\nexport default class BitObject {\n validateBeforePersist = true; // validate the object before persisting\n id(): string | Buffer {\n throw new Error('id() was not implemented...');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n toBuffer(pretty?: boolean): Buffer {\n throw new Error('toBuffer() was not implemented...');\n }\n\n refs(): Ref[] {\n return [];\n }\n\n getType(): string {\n return this.constructor.name;\n }\n\n getHeader(buffer: Buffer): string {\n return `${this.getType()} ${this.hash().toString()} ${buffer.toString().length}${NULL_BYTE}`;\n }\n\n async collectRefs(repo: Repository): Promise<Ref[]> {\n const refsCollection = [];\n const objectType = this.getType();\n const objectId = objectType === 'Component' ? `Component ${this.id()}` : objectType;\n\n async function addRefs(object: BitObject) {\n const refs = object.refs();\n let objs;\n try {\n objs = await Promise.all(refs.map((ref) => ref.load(repo, true)));\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(`failed finding an object file required by ${object.constructor.name} object, originated from ${objectId}\npath: ${err.path}`);\n }\n throw err;\n }\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n refsCollection.push(...refs);\n await Promise.all(objs.map((obj) => addRefs(obj)));\n }\n\n await addRefs(this);\n return refsCollection;\n }\n\n async collectRaw(repo: Repository): Promise<ObjectItem[]> {\n const refs = await this.collectRefs(repo);\n return repo.loadManyRaw(refs);\n }\n\n asRaw(repo: Repository): Promise<Buffer> {\n return repo.loadRaw(this.hash());\n }\n\n collect(repo: Repository): BitObject[] {\n const objects: BitObject[] = [];\n\n function addRefs(object: BitObject) {\n const objs = object.refs().map((ref) => {\n return ref.loadSync(repo);\n });\n\n objects.push(...objs);\n objs.forEach((obj) => addRefs(obj));\n }\n\n addRefs(this);\n return objects;\n }\n\n /**\n * indexing method\n */\n hash(): Ref {\n // console.log(`sha ${sha1(this.id())}, id ${this.id()}`); // uncomment when debugging hash issues\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n compress(): Promise<Buffer> {\n return deflate(this.serialize());\n }\n\n serialize(): Buffer {\n const buffer = this.toBuffer();\n return Buffer.concat([Buffer.from(this.getHeader(buffer)), buffer] as unknown as Uint8Array[]);\n }\n\n /**\n * see `this.parseSync` for the sync version\n */\n static async parseObject(fileContents: Buffer, filePath?: string): Promise<BitObject> {\n const buffer = await inflate(fileContents, filePath);\n return parse(buffer);\n }\n\n /**\n * same as `parseObject`, however, if the type is not one of the given \"typeNames\", it returns null.\n * the performance improvement is huge compare to \"parseObject\", as it doesn't parse the object if not needed.\n */\n static async parseObjectOnlyIfType(\n fileContents: Buffer,\n typeNames: string[],\n filePath?: string\n ): Promise<BitObject | null> {\n const buffer = await inflate(fileContents, filePath);\n const { type } = extractHeaderAndContent(buffer);\n if (typeNames.includes(type)) return parse(buffer);\n return null;\n }\n\n /**\n * prefer using `this.parseObject()`, unless it must be sync.\n */\n static parseSync(fileContents: Buffer): BitObject {\n // @ts-ignore todo: fix after merging #9359\n const buffer = inflateSync(fileContents);\n return parse(buffer);\n }\n\n static makeHash(str: string | Buffer): string {\n return sha1(str);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,7 @@ export default class BitRawObject {
7
7
  _ref: string;
8
8
  constructor(buffer: Buffer, ref: string | null | undefined, type: string | null | undefined, content: Buffer | null | undefined, parsedContent: any | null | undefined);
9
9
  getParsedContent(): any;
10
- getString(pretty: boolean): string | Buffer;
10
+ getString(pretty: boolean): string | Buffer<ArrayBufferLike>;
11
11
  set ref(ref: string);
12
12
  get ref(): string;
13
13
  get id(): string;
@@ -36,13 +36,10 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
36
36
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
37
37
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
38
38
  class BitRawObject {
39
- constructor(buffer, ref, type, content,
40
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
41
- parsedContent) {
39
+ constructor(buffer, ref, type, content, parsedContent) {
42
40
  _defineProperty(this, "headers", void 0);
43
41
  _defineProperty(this, "type", void 0);
44
42
  _defineProperty(this, "content", void 0);
45
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
46
43
  _defineProperty(this, "parsedContent", void 0);
47
44
  _defineProperty(this, "_ref", void 0);
48
45
  let headers;
@@ -92,18 +89,12 @@ class BitRawObject {
92
89
  return this.content;
93
90
  }
94
91
  }
95
-
96
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
97
92
  set ref(ref) {
98
93
  this._ref = ref;
99
94
  }
100
-
101
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
102
95
  get ref() {
103
96
  return this._ref;
104
97
  }
105
-
106
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
107
98
  get id() {
108
99
  switch (this.type) {
109
100
  case 'Version':
@@ -140,7 +131,6 @@ class BitRawObject {
140
131
  * @param {Any} parsedContent
141
132
  */
142
133
  toRealObject() {
143
- // @ts-ignore
144
134
  return _legacy3().typesObj[this.type].from(this.parsedContent || this.getParsedContent(), this.headers[1]);
145
135
  }
146
136
  clone() {
@@ -1 +1 @@
1
- {"version":3,"names":["_legacy","data","require","_legacy2","_legacy3","_lodash","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BitRawObject","constructor","buffer","ref","type","content","parsedContent","headers","contentFromBuffer","firstNullByteLocation","indexOf","NULL_BYTE","slice","toString","length","split","SPACE_DELIMITER","undefined","typeFromHeader","_ref","getParsedContent","JSON","parse","getString","pretty","args","getStringifyArgs","stringify","id","scope","name","join","refs","values","versions","files","map","file","dists","dist","filter","fromDeflatedBuffer","fileContents","inflate","then","toRealObject","types","from","clone","exports","default"],"sources":["raw-object.ts"],"sourcesContent":["import { NULL_BYTE, SPACE_DELIMITER } from '@teambit/legacy.constants';\nimport { getStringifyArgs, inflate } from '@teambit/legacy.utils';\nimport { typesObj as types } from '@teambit/legacy.scope';\nimport type BitObject from './object';\nimport { clone } from 'lodash';\n\nexport default class BitRawObject {\n headers: string[];\n type: string;\n content: Buffer;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n parsedContent: any;\n _ref: string;\n\n constructor(\n buffer: Buffer,\n ref: string | null | undefined,\n type: string | null | undefined,\n content: Buffer | null | undefined,\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n parsedContent: any | null | undefined\n ) {\n let headers;\n let contentFromBuffer;\n if (buffer) {\n const firstNullByteLocation = buffer.indexOf(NULL_BYTE);\n headers = buffer.slice(0, firstNullByteLocation).toString();\n contentFromBuffer = buffer.slice(firstNullByteLocation + 1, buffer.length);\n }\n this.content = content || contentFromBuffer;\n this.headers = headers ? headers.split(SPACE_DELIMITER) : undefined;\n const typeFromHeader = this.headers ? this.headers[0] : undefined;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.type = type || typeFromHeader;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this._ref = ref;\n this.parsedContent = parsedContent || this.getParsedContent();\n }\n\n getParsedContent() {\n if (this.parsedContent) return this.parsedContent;\n let parsedContent;\n switch (this.type) {\n case 'Version':\n case 'Component':\n case 'Symlink':\n case 'ScopeMeta':\n case 'VersionHistory':\n parsedContent = JSON.parse(this.content.toString());\n break;\n\n default:\n parsedContent = this.content;\n }\n return parsedContent;\n }\n\n getString(pretty: boolean) {\n const args = getStringifyArgs(pretty);\n switch (this.type) {\n case 'Version':\n case 'Component':\n case 'Symlink':\n case 'ScopeMeta':\n case 'VersionHistory':\n return JSON.stringify(this.parsedContent, ...args);\n case 'Source':\n return pretty ? JSON.stringify(JSON.parse(this.content.toString()), ...args) : this.content;\n\n default:\n return this.content;\n }\n }\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n set ref(ref: string) {\n this._ref = ref;\n }\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n get ref(): string {\n return this._ref;\n }\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n get id(): string {\n switch (this.type) {\n case 'Version':\n return 'component version';\n case 'Component':\n return this.parsedContent.scope\n ? [this.parsedContent.scope, this.parsedContent.name].join('/')\n : this.parsedContent.name;\n case 'Symlink':\n return this.parsedContent.name;\n case 'ScopeMeta':\n return this.parsedContent.name;\n\n default:\n return 'component source file';\n }\n }\n\n refs(): string[] {\n if (this.type === 'Component') {\n return Object.values(this.parsedContent.versions);\n }\n if (this.type === 'Version') {\n const files = this.parsedContent.files ? this.parsedContent.files.map((file) => file.file) : [];\n const dists = this.parsedContent.dists ? this.parsedContent.dists.map((dist) => dist.file) : [];\n return [...dists, ...files].filter((ref) => ref);\n }\n\n return [];\n }\n\n static async fromDeflatedBuffer(\n fileContents: Buffer,\n ref: string | null | undefined\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n ): Promise<BitObject> {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return inflate(fileContents).then((buffer) => new BitRawObject(buffer, ref));\n }\n\n /**\n * Build a real object (model) from a parsed content (can be the original parsed conents or a provided one)\n * We use the provided version during the migration process when we change the parsed content outside\n * @param {Any} parsedContent\n */\n toRealObject() {\n // @ts-ignore\n return types[this.type].from(this.parsedContent || this.getParsedContent(), this.headers[1]);\n }\n\n clone() {\n const parsedContent = this.parsedContent ? clone(this.parsedContent) : undefined;\n // TODO: Should also clone the buffers (content)\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return new BitRawObject(undefined, this._ref, this.type, this.content, parsedContent);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_legacy","data","require","_legacy2","_legacy3","_lodash","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BitRawObject","constructor","buffer","ref","type","content","parsedContent","headers","contentFromBuffer","firstNullByteLocation","indexOf","NULL_BYTE","slice","toString","length","split","SPACE_DELIMITER","undefined","typeFromHeader","_ref","getParsedContent","JSON","parse","getString","pretty","args","getStringifyArgs","stringify","id","scope","name","join","refs","values","versions","files","map","file","dists","dist","filter","fromDeflatedBuffer","fileContents","inflate","then","toRealObject","types","from","clone","exports","default"],"sources":["raw-object.ts"],"sourcesContent":["import { NULL_BYTE, SPACE_DELIMITER } from '@teambit/legacy.constants';\nimport { getStringifyArgs, inflate } from '@teambit/legacy.utils';\nimport { typesObj as types } from '@teambit/legacy.scope';\nimport type BitObject from './object';\nimport { clone } from 'lodash';\n\nexport default class BitRawObject {\n headers: string[];\n type: string;\n content: Buffer;\n parsedContent: any;\n _ref: string;\n\n constructor(\n buffer: Buffer,\n ref: string | null | undefined,\n type: string | null | undefined,\n content: Buffer | null | undefined,\n parsedContent: any | null | undefined\n ) {\n let headers;\n let contentFromBuffer;\n if (buffer) {\n const firstNullByteLocation = buffer.indexOf(NULL_BYTE);\n headers = buffer.slice(0, firstNullByteLocation).toString();\n contentFromBuffer = buffer.slice(firstNullByteLocation + 1, buffer.length);\n }\n this.content = content || contentFromBuffer;\n this.headers = headers ? headers.split(SPACE_DELIMITER) : undefined;\n const typeFromHeader = this.headers ? this.headers[0] : undefined;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.type = type || typeFromHeader;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this._ref = ref;\n this.parsedContent = parsedContent || this.getParsedContent();\n }\n\n getParsedContent() {\n if (this.parsedContent) return this.parsedContent;\n let parsedContent;\n switch (this.type) {\n case 'Version':\n case 'Component':\n case 'Symlink':\n case 'ScopeMeta':\n case 'VersionHistory':\n parsedContent = JSON.parse(this.content.toString());\n break;\n\n default:\n parsedContent = this.content;\n }\n return parsedContent;\n }\n\n getString(pretty: boolean) {\n const args = getStringifyArgs(pretty);\n switch (this.type) {\n case 'Version':\n case 'Component':\n case 'Symlink':\n case 'ScopeMeta':\n case 'VersionHistory':\n return JSON.stringify(this.parsedContent, ...args);\n case 'Source':\n return pretty ? JSON.stringify(JSON.parse(this.content.toString()), ...args) : this.content;\n\n default:\n return this.content;\n }\n }\n\n set ref(ref: string) {\n this._ref = ref;\n }\n\n get ref(): string {\n return this._ref;\n }\n\n get id(): string {\n switch (this.type) {\n case 'Version':\n return 'component version';\n case 'Component':\n return this.parsedContent.scope\n ? [this.parsedContent.scope, this.parsedContent.name].join('/')\n : this.parsedContent.name;\n case 'Symlink':\n return this.parsedContent.name;\n case 'ScopeMeta':\n return this.parsedContent.name;\n\n default:\n return 'component source file';\n }\n }\n\n refs(): string[] {\n if (this.type === 'Component') {\n return Object.values(this.parsedContent.versions);\n }\n if (this.type === 'Version') {\n const files = this.parsedContent.files ? this.parsedContent.files.map((file) => file.file) : [];\n const dists = this.parsedContent.dists ? this.parsedContent.dists.map((dist) => dist.file) : [];\n return [...dists, ...files].filter((ref) => ref);\n }\n\n return [];\n }\n\n static async fromDeflatedBuffer(fileContents: Buffer, ref: string | null | undefined): Promise<BitObject> {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return inflate(fileContents).then((buffer) => new BitRawObject(buffer, ref));\n }\n\n /**\n * Build a real object (model) from a parsed content (can be the original parsed conents or a provided one)\n * We use the provided version during the migration process when we change the parsed content outside\n * @param {Any} parsedContent\n */\n toRealObject() {\n return types[this.type].from(this.parsedContent || this.getParsedContent(), this.headers[1]);\n }\n\n clone() {\n const parsedContent = this.parsedContent ? clone(this.parsedContent) : undefined;\n // TODO: Should also clone the buffers (content)\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return new BitRawObject(undefined, this._ref, this.type, this.content, parsedContent);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -10,8 +10,8 @@ import type { ObjectItem } from './object-list';
10
10
  import { ObjectList } from './object-list';
11
11
  import BitRawObject from './raw-object';
12
12
  import Ref from './ref';
13
- import type { ContentTransformer } from './repository-hooks';
14
13
  import type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';
14
+ type ContentTransformer = (content: Buffer) => Buffer;
15
15
  export default class Repository {
16
16
  objects: {
17
17
  [key: string]: BitObject;
@@ -40,6 +40,18 @@ export default class Repository {
40
40
  static reset(scopePath: string): Promise<void>;
41
41
  static getPathByScopePath(scopePath: string): string;
42
42
  static onPostObjectsPersist: () => Promise<void>;
43
+ /**
44
+ * Hook for transforming content before objects are persisted to the filesystem.
45
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
46
+ * which needs to maintain sync behavior for compatibility with existing code.
47
+ */
48
+ static onPreObjectPersist: (content: Buffer) => Buffer;
49
+ /**
50
+ * Hook for transforming content after objects are read from the filesystem.
51
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
52
+ * which needs to maintain sync behavior for compatibility with existing code.
53
+ */
54
+ static onPostObjectRead: (content: Buffer) => Buffer;
43
55
  reLoadScopeIndex(): Promise<void>;
44
56
  /**
45
57
  * current scope index difference with <scope_folder>/index.json content, reload it
@@ -150,3 +162,4 @@ export default class Repository {
150
162
  readObjectsFromPendingDir(pendingDir: PathOsBasedAbsolute): Promise<ObjectList>;
151
163
  private hashPath;
152
164
  }
165
+ export {};
@@ -81,6 +81,13 @@ function _legacy3() {
81
81
  };
82
82
  return data;
83
83
  }
84
+ function _glob() {
85
+ const data = require("glob");
86
+ _glob = function () {
87
+ return data;
88
+ };
89
+ return data;
90
+ }
84
91
  function _toolboxFs() {
85
92
  const data = require("@teambit/toolbox.fs.remove-empty-dir");
86
93
  _toolboxFs = function () {
@@ -137,13 +144,6 @@ function _ref() {
137
144
  };
138
145
  return data;
139
146
  }
140
- function _repositoryHooks() {
141
- const data = require("./repository-hooks");
142
- _repositoryHooks = function () {
143
- return data;
144
- };
145
- return data;
146
- }
147
147
  function _harmonyModules2() {
148
148
  const data = require("@teambit/harmony.modules.in-memory-cache");
149
149
  _harmonyModules2 = function () {
@@ -167,7 +167,6 @@ const OBJECTS_BACKUP_DIR = `${_legacy().OBJECTS_DIR}.bak`;
167
167
  const TRASH_DIR = 'trash';
168
168
  class Repository {
169
169
  constructor(scopePath, scopeJson) {
170
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
171
170
  _defineProperty(this, "objects", {});
172
171
  _defineProperty(this, "objectsToRemove", []);
173
172
  _defineProperty(this, "scopeJson", void 0);
@@ -181,8 +180,8 @@ class Repository {
181
180
  _defineProperty(this, "_persistMutex", void 0);
182
181
  this.scopePath = scopePath;
183
182
  this.scopeJson = scopeJson;
184
- this.onRead = (0, _repositoryHooks().onRead)(scopePath, scopeJson);
185
- this.onPersist = (0, _repositoryHooks().onPersist)(scopePath, scopeJson);
183
+ this.onRead = content => Repository.onPostObjectRead?.(content) || content;
184
+ this.onPersist = content => Repository.onPreObjectPersist?.(content) || content;
186
185
  this.cache = (0, _harmonyModules2().createInMemoryCache)({
187
186
  maxSize: (0, _harmonyModules2().getMaxSizeForObjects)()
188
187
  });
@@ -387,7 +386,7 @@ class Repository {
387
386
  return parsedObject;
388
387
  }
389
388
  async listRefs(cwd = this.getPath()) {
390
- const matches = await (0, _legacy3().glob)(path().join('*', '*'), {
389
+ const matches = await (0, _glob().glob)(path().join('*', '*'), {
391
390
  cwd
392
391
  });
393
392
  const refs = matches.map(str => {
@@ -402,7 +401,7 @@ class Repository {
402
401
  }
403
402
  async listRefsStartWith(shortHash) {
404
403
  const pathPrefix = this.hashPath(shortHash);
405
- const matches = await (0, _legacy3().glob)(`${pathPrefix}*`, {
404
+ const matches = await (0, _glob().glob)(`${pathPrefix}*`, {
406
405
  cwd: this.getPath()
407
406
  });
408
407
  const refs = matches.map(str => {
@@ -808,6 +807,18 @@ class Repository {
808
807
  }
809
808
  exports.default = Repository;
810
809
  _defineProperty(Repository, "onPostObjectsPersist", void 0);
810
+ /**
811
+ * Hook for transforming content before objects are persisted to the filesystem.
812
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
813
+ * which needs to maintain sync behavior for compatibility with existing code.
814
+ */
815
+ _defineProperty(Repository, "onPreObjectPersist", void 0);
816
+ /**
817
+ * Hook for transforming content after objects are read from the filesystem.
818
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
819
+ * which needs to maintain sync behavior for compatibility with existing code.
820
+ */
821
+ _defineProperty(Repository, "onPostObjectRead", void 0);
811
822
  async function removeFile(filePath, propagateDirs = false) {
812
823
  try {
813
824
  await _fsExtra().default.unlink(filePath);