@teambit/objects 0.0.19

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 (123) hide show
  1. package/artifacts/__bit_junit.xml +68 -0
  2. package/artifacts/preview/teambit_scope_objects-preview.js +1 -0
  3. package/dist/fixtures/version-model-extended.json +48 -0
  4. package/dist/fixtures/version-model-object.json +87 -0
  5. package/dist/index.d.ts +19 -0
  6. package/dist/index.js +371 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/models/dependencies-graph.d.ts +45 -0
  9. package/dist/models/dependencies-graph.js +106 -0
  10. package/dist/models/dependencies-graph.js.map +1 -0
  11. package/dist/models/detach-heads.d.ts +25 -0
  12. package/dist/models/detach-heads.js +84 -0
  13. package/dist/models/detach-heads.js.map +1 -0
  14. package/dist/models/export-metadata.d.ts +24 -0
  15. package/dist/models/export-metadata.js +76 -0
  16. package/dist/models/export-metadata.js.map +1 -0
  17. package/dist/models/index.d.ts +10 -0
  18. package/dist/models/index.js +125 -0
  19. package/dist/models/index.js.map +1 -0
  20. package/dist/models/lane-history.d.ts +40 -0
  21. package/dist/models/lane-history.js +117 -0
  22. package/dist/models/lane-history.js.map +1 -0
  23. package/dist/models/lane.d.ts +124 -0
  24. package/dist/models/lane.js +463 -0
  25. package/dist/models/lane.js.map +1 -0
  26. package/dist/models/model-component.d.ts +317 -0
  27. package/dist/models/model-component.js +1365 -0
  28. package/dist/models/model-component.js.map +1 -0
  29. package/dist/models/model-component.spec.d.ts +1 -0
  30. package/dist/models/model-component.spec.js +71 -0
  31. package/dist/models/model-component.spec.js.map +1 -0
  32. package/dist/models/scopeMeta.d.ts +20 -0
  33. package/dist/models/scopeMeta.js +71 -0
  34. package/dist/models/scopeMeta.js.map +1 -0
  35. package/dist/models/source.d.ts +10 -0
  36. package/dist/models/source.js +43 -0
  37. package/dist/models/source.js.map +1 -0
  38. package/dist/models/symlink.d.ts +30 -0
  39. package/dist/models/symlink.js +91 -0
  40. package/dist/models/symlink.js.map +1 -0
  41. package/dist/models/version-history.d.ts +59 -0
  42. package/dist/models/version-history.js +285 -0
  43. package/dist/models/version-history.js.map +1 -0
  44. package/dist/models/version.d.ts +279 -0
  45. package/dist/models/version.js +777 -0
  46. package/dist/models/version.js.map +1 -0
  47. package/dist/models/version.spec.d.ts +1 -0
  48. package/dist/models/version.spec.js +340 -0
  49. package/dist/models/version.spec.js.map +1 -0
  50. package/dist/objects/bit-object-list.d.ts +24 -0
  51. package/dist/objects/bit-object-list.js +65 -0
  52. package/dist/objects/bit-object-list.js.map +1 -0
  53. package/dist/objects/index.d.ts +5 -0
  54. package/dist/objects/index.js +60 -0
  55. package/dist/objects/index.js.map +1 -0
  56. package/dist/objects/object-list-to-graph.d.ts +13 -0
  57. package/dist/objects/object-list-to-graph.js +93 -0
  58. package/dist/objects/object-list-to-graph.js.map +1 -0
  59. package/dist/objects/object-list.d.ts +52 -0
  60. package/dist/objects/object-list.js +369 -0
  61. package/dist/objects/object-list.js.map +1 -0
  62. package/dist/objects/object.d.ts +35 -0
  63. package/dist/objects/object.js +190 -0
  64. package/dist/objects/object.js.map +1 -0
  65. package/dist/objects/objects-readable-generator.d.ts +31 -0
  66. package/dist/objects/objects-readable-generator.js +192 -0
  67. package/dist/objects/objects-readable-generator.js.map +1 -0
  68. package/dist/objects/raw-object.d.ts +23 -0
  69. package/dist/objects/raw-object.js +155 -0
  70. package/dist/objects/raw-object.js.map +1 -0
  71. package/dist/objects/ref.d.ts +14 -0
  72. package/dist/objects/ref.js +45 -0
  73. package/dist/objects/ref.js.map +1 -0
  74. package/dist/objects/repository-hooks.d.ts +4 -0
  75. package/dist/objects/repository-hooks.js +56 -0
  76. package/dist/objects/repository-hooks.js.map +1 -0
  77. package/dist/objects/repository.d.ts +148 -0
  78. package/dist/objects/repository.js +842 -0
  79. package/dist/objects/repository.js.map +1 -0
  80. package/dist/objects/scope-index.d.ts +73 -0
  81. package/dist/objects/scope-index.js +251 -0
  82. package/dist/objects/scope-index.js.map +1 -0
  83. package/dist/objects/scope-index.spec.d.ts +1 -0
  84. package/dist/objects/scope-index.spec.js +152 -0
  85. package/dist/objects/scope-index.spec.js.map +1 -0
  86. package/dist/objects.aspect.d.ts +2 -0
  87. package/dist/objects.aspect.js +18 -0
  88. package/dist/objects.aspect.js.map +1 -0
  89. package/dist/objects.main.runtime.d.ts +7 -0
  90. package/dist/objects.main.runtime.js +36 -0
  91. package/dist/objects.main.runtime.js.map +1 -0
  92. package/dist/preview-1736824735631.js +7 -0
  93. package/fixtures/version-model-extended.json +48 -0
  94. package/fixtures/version-model-object.json +87 -0
  95. package/models/dependencies-graph.ts +119 -0
  96. package/models/detach-heads.ts +79 -0
  97. package/models/export-metadata.ts +57 -0
  98. package/models/index.ts +11 -0
  99. package/models/lane-history.ts +106 -0
  100. package/models/lane.ts +367 -0
  101. package/models/model-component.spec.ts +55 -0
  102. package/models/model-component.ts +1367 -0
  103. package/models/scopeMeta.ts +60 -0
  104. package/models/source.ts +32 -0
  105. package/models/symlink.ts +66 -0
  106. package/models/version-history.ts +266 -0
  107. package/models/version.spec.ts +288 -0
  108. package/models/version.ts +818 -0
  109. package/objects/bit-object-list.ts +59 -0
  110. package/objects/index.ts +6 -0
  111. package/objects/object-list-to-graph.ts +69 -0
  112. package/objects/object-list.ts +313 -0
  113. package/objects/object.ts +153 -0
  114. package/objects/objects-readable-generator.ts +167 -0
  115. package/objects/raw-object.ts +142 -0
  116. package/objects/ref.ts +45 -0
  117. package/objects/repository-hooks.ts +42 -0
  118. package/objects/repository.ts +753 -0
  119. package/objects/scope-index.spec.ts +95 -0
  120. package/objects/scope-index.ts +192 -0
  121. package/package.json +98 -0
  122. package/types/asset.d.ts +41 -0
  123. package/types/style.d.ts +42 -0
@@ -0,0 +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":[]}
@@ -0,0 +1,35 @@
1
+ import { ObjectItem } from './object-list';
2
+ import Ref from './ref';
3
+ import Repository from './repository';
4
+ export default class BitObject {
5
+ validateBeforePersist: boolean;
6
+ id(): string | Buffer;
7
+ toBuffer(pretty?: boolean): Buffer;
8
+ refs(): Ref[];
9
+ getType(): string;
10
+ getHeader(buffer: Buffer): string;
11
+ collectRefs(repo: Repository): Promise<Ref[]>;
12
+ collectRaw(repo: Repository): Promise<ObjectItem[]>;
13
+ asRaw(repo: Repository): Promise<Buffer>;
14
+ collect(repo: Repository): BitObject[];
15
+ /**
16
+ * indexing method
17
+ */
18
+ hash(): Ref;
19
+ compress(): Promise<Buffer>;
20
+ serialize(): Buffer;
21
+ /**
22
+ * see `this.parseSync` for the sync version
23
+ */
24
+ static parseObject(fileContents: Buffer, filePath?: string): Promise<BitObject>;
25
+ /**
26
+ * same as `parseObject`, however, if the type is not one of the given "typeNames", it returns null.
27
+ * the performance improvement is huge compare to "parseObject", as it doesn't parse the object if not needed.
28
+ */
29
+ static parseObjectOnlyIfType(fileContents: Buffer, typeNames: string[], filePath?: string): Promise<BitObject | null>;
30
+ /**
31
+ * prefer using `this.parseObject()`, unless it must be sync.
32
+ */
33
+ static parseSync(fileContents: Buffer): BitObject;
34
+ static makeHash(str: string | Buffer): string;
35
+ }
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ function _zlib() {
8
+ const data = require("zlib");
9
+ _zlib = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _legacy() {
15
+ const data = require("@teambit/legacy.constants");
16
+ _legacy = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _legacy2() {
22
+ const data = require("@teambit/legacy.utils");
23
+ _legacy2 = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _toolboxCrypto() {
29
+ const data = require("@teambit/toolbox.crypto.sha1");
30
+ _toolboxCrypto = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function _legacy3() {
36
+ const data = require("@teambit/legacy.scope");
37
+ _legacy3 = function () {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
42
+ function _ref() {
43
+ const data = _interopRequireDefault(require("./ref"));
44
+ _ref = function () {
45
+ return data;
46
+ };
47
+ return data;
48
+ }
49
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
50
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
51
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
52
+ 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); }
53
+ function parse(buffer) {
54
+ const {
55
+ type,
56
+ hash,
57
+ contents
58
+ } = extractHeaderAndContent(buffer);
59
+ if (!_legacy3().typesObj[type]) throw new (_legacy3().UnknownObjectType)(type);
60
+ return _legacy3().typesObj[type].parse(contents, hash);
61
+ }
62
+ function extractHeaderAndContent(buffer) {
63
+ const firstNullByteLocation = buffer.indexOf(_legacy().NULL_BYTE);
64
+ const headers = buffer.slice(0, firstNullByteLocation).toString();
65
+ const [type, hash] = headers.split(_legacy().SPACE_DELIMITER);
66
+ const contents = buffer.slice(firstNullByteLocation + 1, buffer.length);
67
+ return {
68
+ type,
69
+ hash,
70
+ contents
71
+ };
72
+ }
73
+ class BitObject {
74
+ constructor() {
75
+ _defineProperty(this, "validateBeforePersist", true);
76
+ }
77
+ // validate the object before persisting
78
+ id() {
79
+ throw new Error('id() was not implemented...');
80
+ }
81
+
82
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
83
+ toBuffer(pretty) {
84
+ throw new Error('toBuffer() was not implemented...');
85
+ }
86
+ refs() {
87
+ return [];
88
+ }
89
+ getType() {
90
+ return this.constructor.name;
91
+ }
92
+ getHeader(buffer) {
93
+ return `${this.getType()} ${this.hash().toString()} ${buffer.toString().length}${_legacy().NULL_BYTE}`;
94
+ }
95
+ async collectRefs(repo) {
96
+ const refsCollection = [];
97
+ const objectType = this.getType();
98
+ const objectId = objectType === 'Component' ? `Component ${this.id()}` : objectType;
99
+ async function addRefs(object) {
100
+ const refs = object.refs();
101
+ let objs;
102
+ try {
103
+ objs = await Promise.all(refs.map(ref => ref.load(repo, true)));
104
+ } catch (err) {
105
+ if (err.code === 'ENOENT') {
106
+ throw new Error(`failed finding an object file required by ${object.constructor.name} object, originated from ${objectId}
107
+ path: ${err.path}`);
108
+ }
109
+ throw err;
110
+ }
111
+
112
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
113
+ refsCollection.push(...refs);
114
+ await Promise.all(objs.map(obj => addRefs(obj)));
115
+ }
116
+ await addRefs(this);
117
+ return refsCollection;
118
+ }
119
+ async collectRaw(repo) {
120
+ const refs = await this.collectRefs(repo);
121
+ return repo.loadManyRaw(refs);
122
+ }
123
+ asRaw(repo) {
124
+ return repo.loadRaw(this.hash());
125
+ }
126
+ collect(repo) {
127
+ const objects = [];
128
+ function addRefs(object) {
129
+ const objs = object.refs().map(ref => {
130
+ return ref.loadSync(repo);
131
+ });
132
+ objects.push(...objs);
133
+ objs.forEach(obj => addRefs(obj));
134
+ }
135
+ addRefs(this);
136
+ return objects;
137
+ }
138
+
139
+ /**
140
+ * indexing method
141
+ */
142
+ hash() {
143
+ // console.log(`sha ${sha1(this.id())}, id ${this.id()}`); // uncomment when debugging hash issues
144
+ return new (_ref().default)(BitObject.makeHash(this.id()));
145
+ }
146
+ compress() {
147
+ return (0, _legacy2().deflate)(this.serialize());
148
+ }
149
+ serialize() {
150
+ const buffer = this.toBuffer();
151
+ return Buffer.concat([Buffer.from(this.getHeader(buffer)), buffer]);
152
+ }
153
+
154
+ /**
155
+ * see `this.parseSync` for the sync version
156
+ */
157
+ static async parseObject(fileContents, filePath) {
158
+ const buffer = await (0, _legacy2().inflate)(fileContents, filePath);
159
+ return parse(buffer);
160
+ }
161
+
162
+ /**
163
+ * same as `parseObject`, however, if the type is not one of the given "typeNames", it returns null.
164
+ * the performance improvement is huge compare to "parseObject", as it doesn't parse the object if not needed.
165
+ */
166
+ static async parseObjectOnlyIfType(fileContents, typeNames, filePath) {
167
+ const buffer = await (0, _legacy2().inflate)(fileContents, filePath);
168
+ const {
169
+ type
170
+ } = extractHeaderAndContent(buffer);
171
+ if (typeNames.includes(type)) return parse(buffer);
172
+ return null;
173
+ }
174
+
175
+ /**
176
+ * prefer using `this.parseObject()`, unless it must be sync.
177
+ */
178
+ static parseSync(fileContents) {
179
+ // @ts-ignore todo: fix after merging #9359
180
+ const buffer = (0, _zlib().inflateSync)(fileContents);
181
+ return parse(buffer);
182
+ }
183
+ static makeHash(str) {
184
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
185
+ return (0, _toolboxCrypto().sha1)(str);
186
+ }
187
+ }
188
+ exports.default = BitObject;
189
+
190
+ //# sourceMappingURL=object.js.map
@@ -0,0 +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 { ObjectItem } from './object-list';\nimport Ref from './ref';\nimport 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":[]}
@@ -0,0 +1,31 @@
1
+ import { Readable } from 'stream';
2
+ import Repository from './repository';
3
+ import Ref from './ref';
4
+ import { Scope } from '@teambit/legacy.scope';
5
+ import { Lane, LaneHistory, ModelComponent } from '../models';
6
+ export type ComponentWithCollectOptions = {
7
+ component: ModelComponent;
8
+ version: string;
9
+ collectParents: boolean;
10
+ collectParentsUntil?: Ref | null;
11
+ collectArtifacts: boolean;
12
+ includeVersionHistory?: boolean;
13
+ };
14
+ export declare class ObjectsReadableGenerator {
15
+ private repo;
16
+ private callbackOnceDone;
17
+ readable: Readable;
18
+ private pushed;
19
+ constructor(repo: Repository, callbackOnceDone: Function);
20
+ pushObjectsToReadable(componentsWithOptions: ComponentWithCollectOptions[]): Promise<void>;
21
+ pushLanes(lanesToFetch: Lane[], lanesHistory?: LaneHistory[]): Promise<void>;
22
+ pushObjects(refs: Ref[], scope: Scope): Promise<void>;
23
+ private closeReadableSuccessfully;
24
+ private closeReadableFailure;
25
+ private bitObjectToItem;
26
+ private getObjectGracefully;
27
+ private pushScopeMeta;
28
+ private push;
29
+ private pushManyObjects;
30
+ private pushComponentObjects;
31
+ }
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ObjectsReadableGenerator = void 0;
7
+ function _pMapSeries() {
8
+ const data = _interopRequireDefault(require("p-map-series"));
9
+ _pMapSeries = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _bitError() {
15
+ const data = require("@teambit/bit-error");
16
+ _bitError = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _stream() {
22
+ const data = require("stream");
23
+ _stream = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _legacy() {
29
+ const data = require("@teambit/legacy.logger");
30
+ _legacy = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function _component() {
36
+ const data = require("@teambit/component.snap-distance");
37
+ _component = function () {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
42
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
43
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
44
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
45
+ 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); }
46
+ class ObjectsReadableGenerator {
47
+ constructor(repo, callbackOnceDone) {
48
+ this.repo = repo;
49
+ this.callbackOnceDone = callbackOnceDone;
50
+ _defineProperty(this, "readable", void 0);
51
+ _defineProperty(this, "pushed", []);
52
+ this.readable = new (_stream().Readable)({
53
+ objectMode: true,
54
+ read() {}
55
+ });
56
+ }
57
+ async pushObjectsToReadable(componentsWithOptions) {
58
+ try {
59
+ await this.pushScopeMeta();
60
+ await (0, _pMapSeries().default)(componentsWithOptions, async componentWithOptions => this.pushComponentObjects(componentWithOptions));
61
+ this.closeReadableSuccessfully();
62
+ } catch (err) {
63
+ this.closeReadableFailure(err);
64
+ }
65
+ }
66
+ async pushLanes(lanesToFetch, lanesHistory = []) {
67
+ try {
68
+ const lanesItems = await Promise.all(lanesToFetch.map(laneToFetch => this.bitObjectToItem(laneToFetch)));
69
+ const laneHistoryItems = await Promise.all(lanesHistory.map(laneHistory => this.bitObjectToItem(laneHistory)));
70
+ this.pushManyObjects([...lanesItems, ...laneHistoryItems]);
71
+ this.closeReadableSuccessfully();
72
+ } catch (err) {
73
+ this.closeReadableFailure(err);
74
+ }
75
+ }
76
+ async pushObjects(refs, scope) {
77
+ try {
78
+ await (0, _pMapSeries().default)(refs, async ref => {
79
+ const objectItem = await this.getObjectGracefully(ref, scope);
80
+ if (objectItem) this.push(objectItem);
81
+ });
82
+ this.closeReadableSuccessfully();
83
+ } catch (err) {
84
+ this.closeReadableFailure(err);
85
+ }
86
+ }
87
+ closeReadableSuccessfully() {
88
+ _legacy().logger.debug(`ObjectsReadableGenerator, pushed ${this.pushed.length} objects`);
89
+ this.callbackOnceDone();
90
+ this.readable.push(null);
91
+ }
92
+ closeReadableFailure(err) {
93
+ _legacy().logger.debug(`ObjectsReadableGenerator, pushed ${this.pushed.length} objects`);
94
+ _legacy().logger.error(`ObjectsReadableGenerator, got an error`, err);
95
+ this.callbackOnceDone(err);
96
+ this.readable.destroy(err);
97
+ }
98
+ async bitObjectToItem(obj) {
99
+ return {
100
+ ref: obj.hash(),
101
+ buffer: await obj.compress(),
102
+ type: obj.getType()
103
+ };
104
+ }
105
+ async getObjectGracefully(ref, scope) {
106
+ try {
107
+ return await scope.getObjectItem(ref);
108
+ } catch (err) {
109
+ _legacy().logger.warn(`getObjectGracefully: failed retrieving an object ${ref.toString()} from the filesystem.\n${err.message}`);
110
+ return null;
111
+ }
112
+ }
113
+ async pushScopeMeta() {
114
+ const scopeMeta = await this.repo.getScopeMetaObject();
115
+ this.push(scopeMeta);
116
+ }
117
+ push(obj) {
118
+ const hashStr = obj.ref.toString();
119
+ if (this.pushed.includes(hashStr)) {
120
+ return;
121
+ }
122
+ _legacy().logger.trace('ObjectsReadableGenerator.push', hashStr);
123
+ this.readable.push(obj);
124
+ this.pushed.push(hashStr);
125
+ }
126
+ pushManyObjects(objects) {
127
+ objects.map(obj => this.push(obj));
128
+ }
129
+ async pushComponentObjects(componentWithOptions) {
130
+ const {
131
+ component,
132
+ collectParents,
133
+ collectArtifacts,
134
+ collectParentsUntil,
135
+ includeVersionHistory
136
+ } = componentWithOptions;
137
+ const version = await component.loadVersion(componentWithOptions.version, this.repo, false);
138
+ if (!version) throw new (_bitError().BitError)(`failed loading version ${componentWithOptions.version} of ${component.id()}`);
139
+ if (collectParentsUntil && version.hash().isEqual(collectParentsUntil)) {
140
+ return;
141
+ }
142
+ const collectVersionObjects = async ver => {
143
+ const versionRefs = ver.refsWithOptions(false, collectArtifacts);
144
+ const missingVersionRefs = versionRefs.filter(ref => !this.pushed.includes(ref.toString()));
145
+ const versionObjects = await ver.collectManyObjects(this.repo, missingVersionRefs);
146
+ const versionData = {
147
+ ref: ver.hash(),
148
+ buffer: await ver.asRaw(this.repo),
149
+ type: ver.getType()
150
+ };
151
+ return [...versionObjects, versionData];
152
+ };
153
+ if (!this.pushed.includes(component.hash().toString())) {
154
+ const componentData = {
155
+ ref: component.hash(),
156
+ buffer: await component.asRaw(this.repo),
157
+ type: component.getType()
158
+ };
159
+ this.push(componentData);
160
+ }
161
+ const allVersions = [];
162
+ if (includeVersionHistory) {
163
+ const versionHistory = await component.getAndPopulateVersionHistory(this.repo, version.hash());
164
+ const versionHistoryData = {
165
+ ref: versionHistory.hash(),
166
+ buffer: await versionHistory.asRaw(this.repo),
167
+ type: versionHistory.getType()
168
+ };
169
+ this.push(versionHistoryData);
170
+ }
171
+ if (collectParents) {
172
+ const allParentsHashes = await (0, _component().getAllVersionHashesMemoized)({
173
+ modelComponent: component,
174
+ repo: this.repo,
175
+ startFrom: version.hash(),
176
+ stopAt: collectParentsUntil ? [collectParentsUntil] : undefined
177
+ });
178
+ const missingParentsHashes = allParentsHashes.filter(h => !h.isEqual(version.hash()));
179
+ const parentVersions = await (0, _pMapSeries().default)(missingParentsHashes, parentHash => parentHash.load(this.repo));
180
+ allVersions.push(...parentVersions);
181
+ // note: don't bring the head. otherwise, component-delta of the head won't bring all history of this comp.
182
+ }
183
+ allVersions.push(version);
184
+ await (0, _pMapSeries().default)(allVersions, async ver => {
185
+ const versionObjects = await collectVersionObjects(ver);
186
+ this.pushManyObjects(versionObjects);
187
+ });
188
+ }
189
+ }
190
+ exports.ObjectsReadableGenerator = ObjectsReadableGenerator;
191
+
192
+ //# sourceMappingURL=objects-readable-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_bitError","_stream","_legacy","_component","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ObjectsReadableGenerator","constructor","repo","callbackOnceDone","readable","Readable","objectMode","read","pushObjectsToReadable","componentsWithOptions","pushScopeMeta","pMapSeries","componentWithOptions","pushComponentObjects","closeReadableSuccessfully","err","closeReadableFailure","pushLanes","lanesToFetch","lanesHistory","lanesItems","Promise","all","map","laneToFetch","bitObjectToItem","laneHistoryItems","laneHistory","pushManyObjects","pushObjects","refs","scope","ref","objectItem","getObjectGracefully","push","logger","debug","pushed","length","error","destroy","obj","hash","buffer","compress","type","getType","getObjectItem","warn","toString","message","scopeMeta","getScopeMetaObject","hashStr","includes","trace","objects","component","collectParents","collectArtifacts","collectParentsUntil","includeVersionHistory","version","loadVersion","BitError","id","isEqual","collectVersionObjects","ver","versionRefs","refsWithOptions","missingVersionRefs","filter","versionObjects","collectManyObjects","versionData","asRaw","componentData","allVersions","versionHistory","getAndPopulateVersionHistory","versionHistoryData","allParentsHashes","getAllVersionHashesMemoized","modelComponent","startFrom","stopAt","undefined","missingParentsHashes","h","parentVersions","parentHash","load","exports"],"sources":["objects-readable-generator.ts"],"sourcesContent":["import pMapSeries from 'p-map-series';\nimport { BitError } from '@teambit/bit-error';\nimport { Readable } from 'stream';\nimport BitObject from './object';\nimport Repository from './repository';\nimport Ref from './ref';\nimport { Scope } from '@teambit/legacy.scope';\nimport { logger } from '@teambit/legacy.logger';\nimport { getAllVersionHashesMemoized } from '@teambit/component.snap-distance';\nimport { Lane, LaneHistory, ModelComponent, Version } from '../models';\nimport { ObjectItem } from './object-list';\n\nexport type ComponentWithCollectOptions = {\n component: ModelComponent;\n version: string;\n collectParents: boolean;\n collectParentsUntil?: Ref | null; // stop traversing when this hash found. helps to import only the delta.\n collectArtifacts: boolean;\n includeVersionHistory?: boolean; // send VersionHistory object if exists rather than collecting parents\n};\n\nexport class ObjectsReadableGenerator {\n public readable: Readable;\n private pushed: string[] = [];\n constructor(\n private repo: Repository,\n private callbackOnceDone: Function\n ) {\n this.readable = new Readable({ objectMode: true, read() {} });\n }\n async pushObjectsToReadable(componentsWithOptions: ComponentWithCollectOptions[]) {\n try {\n await this.pushScopeMeta();\n await pMapSeries(componentsWithOptions, async (componentWithOptions) =>\n this.pushComponentObjects(componentWithOptions)\n );\n this.closeReadableSuccessfully();\n } catch (err: any) {\n this.closeReadableFailure(err);\n }\n }\n\n async pushLanes(lanesToFetch: Lane[], lanesHistory: LaneHistory[] = []) {\n try {\n const lanesItems = await Promise.all(lanesToFetch.map((laneToFetch) => this.bitObjectToItem(laneToFetch)));\n const laneHistoryItems = await Promise.all(lanesHistory.map((laneHistory) => this.bitObjectToItem(laneHistory)));\n this.pushManyObjects([...lanesItems, ...laneHistoryItems]);\n this.closeReadableSuccessfully();\n } catch (err: any) {\n this.closeReadableFailure(err);\n }\n }\n\n async pushObjects(refs: Ref[], scope: Scope) {\n try {\n await pMapSeries(refs, async (ref) => {\n const objectItem = await this.getObjectGracefully(ref, scope);\n if (objectItem) this.push(objectItem);\n });\n this.closeReadableSuccessfully();\n } catch (err: any) {\n this.closeReadableFailure(err);\n }\n }\n\n private closeReadableSuccessfully() {\n logger.debug(`ObjectsReadableGenerator, pushed ${this.pushed.length} objects`);\n this.callbackOnceDone();\n this.readable.push(null);\n }\n\n private closeReadableFailure(err: Error) {\n logger.debug(`ObjectsReadableGenerator, pushed ${this.pushed.length} objects`);\n logger.error(`ObjectsReadableGenerator, got an error`, err);\n this.callbackOnceDone(err);\n this.readable.destroy(err);\n }\n\n private async bitObjectToItem(obj: BitObject): Promise<ObjectItem> {\n return {\n ref: obj.hash(),\n buffer: await obj.compress(),\n type: obj.getType(),\n };\n }\n\n private async getObjectGracefully(ref: Ref, scope: Scope) {\n try {\n return await scope.getObjectItem(ref);\n } catch (err: any) {\n logger.warn(\n `getObjectGracefully: failed retrieving an object ${ref.toString()} from the filesystem.\\n${err.message}`\n );\n return null;\n }\n }\n\n private async pushScopeMeta() {\n const scopeMeta = await this.repo.getScopeMetaObject();\n this.push(scopeMeta);\n }\n\n private push(obj: ObjectItem) {\n const hashStr = obj.ref.toString();\n if (this.pushed.includes(hashStr)) {\n return;\n }\n logger.trace('ObjectsReadableGenerator.push', hashStr);\n this.readable.push(obj);\n this.pushed.push(hashStr);\n }\n private pushManyObjects(objects: ObjectItem[]) {\n objects.map((obj) => this.push(obj));\n }\n\n private async pushComponentObjects(componentWithOptions: ComponentWithCollectOptions): Promise<void> {\n const { component, collectParents, collectArtifacts, collectParentsUntil, includeVersionHistory } =\n componentWithOptions;\n const version = await component.loadVersion(componentWithOptions.version, this.repo, false);\n if (!version) throw new BitError(`failed loading version ${componentWithOptions.version} of ${component.id()}`);\n if (collectParentsUntil && version.hash().isEqual(collectParentsUntil)) {\n return;\n }\n const collectVersionObjects = async (ver: Version): Promise<ObjectItem[]> => {\n const versionRefs = ver.refsWithOptions(false, collectArtifacts);\n const missingVersionRefs = versionRefs.filter((ref) => !this.pushed.includes(ref.toString()));\n const versionObjects = await ver.collectManyObjects(this.repo, missingVersionRefs);\n const versionData = { ref: ver.hash(), buffer: await ver.asRaw(this.repo), type: ver.getType() };\n return [...versionObjects, versionData];\n };\n if (!this.pushed.includes(component.hash().toString())) {\n const componentData = {\n ref: component.hash(),\n buffer: await component.asRaw(this.repo),\n type: component.getType(),\n };\n this.push(componentData);\n }\n const allVersions: Version[] = [];\n if (includeVersionHistory) {\n const versionHistory = await component.getAndPopulateVersionHistory(this.repo, version.hash());\n const versionHistoryData = {\n ref: versionHistory.hash(),\n buffer: await versionHistory.asRaw(this.repo),\n type: versionHistory.getType(),\n };\n this.push(versionHistoryData);\n }\n if (collectParents) {\n const allParentsHashes = await getAllVersionHashesMemoized({\n modelComponent: component,\n repo: this.repo,\n startFrom: version.hash(),\n stopAt: collectParentsUntil ? [collectParentsUntil] : undefined,\n });\n const missingParentsHashes = allParentsHashes.filter((h) => !h.isEqual(version.hash()));\n const parentVersions = await pMapSeries(missingParentsHashes, (parentHash) => parentHash.load(this.repo));\n allVersions.push(...(parentVersions as unknown as Version[]));\n // note: don't bring the head. otherwise, component-delta of the head won't bring all history of this comp.\n }\n allVersions.push(version);\n await pMapSeries(allVersions, async (ver) => {\n const versionObjects = await collectVersionObjects(ver);\n this.pushManyObjects(versionObjects);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ import BitObject from './object';
2
+ export default class BitRawObject {
3
+ headers: string[];
4
+ type: string;
5
+ content: Buffer;
6
+ parsedContent: any;
7
+ _ref: string;
8
+ constructor(buffer: Buffer, ref: string | null | undefined, type: string | null | undefined, content: Buffer | null | undefined, parsedContent: any | null | undefined);
9
+ getParsedContent(): any;
10
+ getString(pretty: boolean): string | Buffer;
11
+ set ref(ref: string);
12
+ get ref(): string;
13
+ get id(): string;
14
+ refs(): string[];
15
+ static fromDeflatedBuffer(fileContents: Buffer, ref: string | null | undefined): Promise<BitObject>;
16
+ /**
17
+ * Build a real object (model) from a parsed content (can be the original parsed conents or a provided one)
18
+ * We use the provided version during the migration process when we change the parsed content outside
19
+ * @param {Any} parsedContent
20
+ */
21
+ toRealObject(): any;
22
+ clone(): BitRawObject;
23
+ }