@teambit/objects 0.0.0-00042bc99514ea12d897f81bcd0181e2b034c615

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 (121) hide show
  1. package/dist/fixtures/version-model-extended.json +48 -0
  2. package/dist/fixtures/version-model-object.json +87 -0
  3. package/dist/index.d.ts +19 -0
  4. package/dist/index.js +371 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/models/dependencies-graph.d.ts +46 -0
  7. package/dist/models/dependencies-graph.js +105 -0
  8. package/dist/models/dependencies-graph.js.map +1 -0
  9. package/dist/models/detach-heads.d.ts +25 -0
  10. package/dist/models/detach-heads.js +84 -0
  11. package/dist/models/detach-heads.js.map +1 -0
  12. package/dist/models/export-metadata.d.ts +24 -0
  13. package/dist/models/export-metadata.js +74 -0
  14. package/dist/models/export-metadata.js.map +1 -0
  15. package/dist/models/index.d.ts +10 -0
  16. package/dist/models/index.js +125 -0
  17. package/dist/models/index.js.map +1 -0
  18. package/dist/models/lane-history.d.ts +43 -0
  19. package/dist/models/lane-history.js +131 -0
  20. package/dist/models/lane-history.js.map +1 -0
  21. package/dist/models/lane-history.spec.d.ts +1 -0
  22. package/dist/models/lane-history.spec.js +46 -0
  23. package/dist/models/lane-history.spec.js.map +1 -0
  24. package/dist/models/lane.d.ts +128 -0
  25. package/dist/models/lane.js +485 -0
  26. package/dist/models/lane.js.map +1 -0
  27. package/dist/models/model-component.d.ts +338 -0
  28. package/dist/models/model-component.js +1509 -0
  29. package/dist/models/model-component.js.map +1 -0
  30. package/dist/models/model-component.spec.d.ts +1 -0
  31. package/dist/models/model-component.spec.js +71 -0
  32. package/dist/models/model-component.spec.js.map +1 -0
  33. package/dist/models/scopeMeta.d.ts +20 -0
  34. package/dist/models/scopeMeta.js +68 -0
  35. package/dist/models/scopeMeta.js.map +1 -0
  36. package/dist/models/source.d.ts +10 -0
  37. package/dist/models/source.js +42 -0
  38. package/dist/models/source.js.map +1 -0
  39. package/dist/models/symlink.d.ts +30 -0
  40. package/dist/models/symlink.js +91 -0
  41. package/dist/models/symlink.js.map +1 -0
  42. package/dist/models/version-history.d.ts +59 -0
  43. package/dist/models/version-history.js +296 -0
  44. package/dist/models/version-history.js.map +1 -0
  45. package/dist/models/version.d.ts +288 -0
  46. package/dist/models/version.js +780 -0
  47. package/dist/models/version.js.map +1 -0
  48. package/dist/models/version.spec.d.ts +1 -0
  49. package/dist/models/version.spec.js +332 -0
  50. package/dist/models/version.spec.js.map +1 -0
  51. package/dist/objects/bit-object-list.d.ts +24 -0
  52. package/dist/objects/bit-object-list.js +65 -0
  53. package/dist/objects/bit-object-list.js.map +1 -0
  54. package/dist/objects/index.d.ts +5 -0
  55. package/dist/objects/index.js +60 -0
  56. package/dist/objects/index.js.map +1 -0
  57. package/dist/objects/object-list-to-graph.d.ts +13 -0
  58. package/dist/objects/object-list-to-graph.js +93 -0
  59. package/dist/objects/object-list-to-graph.js.map +1 -0
  60. package/dist/objects/object-list.d.ts +58 -0
  61. package/dist/objects/object-list.js +389 -0
  62. package/dist/objects/object-list.js.map +1 -0
  63. package/dist/objects/object.d.ts +35 -0
  64. package/dist/objects/object.js +189 -0
  65. package/dist/objects/object.js.map +1 -0
  66. package/dist/objects/objects-readable-generator.d.ts +31 -0
  67. package/dist/objects/objects-readable-generator.js +203 -0
  68. package/dist/objects/objects-readable-generator.js.map +1 -0
  69. package/dist/objects/raw-object.d.ts +23 -0
  70. package/dist/objects/raw-object.js +145 -0
  71. package/dist/objects/raw-object.js.map +1 -0
  72. package/dist/objects/ref.d.ts +14 -0
  73. package/dist/objects/ref.js +45 -0
  74. package/dist/objects/ref.js.map +1 -0
  75. package/dist/objects/repository.d.ts +165 -0
  76. package/dist/objects/repository.js +866 -0
  77. package/dist/objects/repository.js.map +1 -0
  78. package/dist/objects/scope-index.d.ts +74 -0
  79. package/dist/objects/scope-index.js +255 -0
  80. package/dist/objects/scope-index.js.map +1 -0
  81. package/dist/objects/scope-index.spec.d.ts +1 -0
  82. package/dist/objects/scope-index.spec.js +152 -0
  83. package/dist/objects/scope-index.spec.js.map +1 -0
  84. package/dist/objects.aspect.d.ts +2 -0
  85. package/dist/objects.aspect.js +18 -0
  86. package/dist/objects.aspect.js.map +1 -0
  87. package/dist/objects.main.runtime.d.ts +7 -0
  88. package/dist/objects.main.runtime.js +36 -0
  89. package/dist/objects.main.runtime.js.map +1 -0
  90. package/dist/preview-1781548568469.js +7 -0
  91. package/fixtures/version-model-extended.json +48 -0
  92. package/fixtures/version-model-object.json +87 -0
  93. package/models/dependencies-graph.ts +120 -0
  94. package/models/detach-heads.ts +79 -0
  95. package/models/export-metadata.ts +56 -0
  96. package/models/index.ts +11 -0
  97. package/models/lane-history.spec.ts +35 -0
  98. package/models/lane-history.ts +131 -0
  99. package/models/lane.ts +400 -0
  100. package/models/model-component.spec.ts +55 -0
  101. package/models/model-component.ts +1522 -0
  102. package/models/scopeMeta.ts +58 -0
  103. package/models/source.ts +31 -0
  104. package/models/symlink.ts +66 -0
  105. package/models/version-history.ts +283 -0
  106. package/models/version.spec.ts +280 -0
  107. package/models/version.ts +821 -0
  108. package/objects/bit-object-list.ts +59 -0
  109. package/objects/index.ts +6 -0
  110. package/objects/object-list-to-graph.ts +69 -0
  111. package/objects/object-list.ts +327 -0
  112. package/objects/object.ts +152 -0
  113. package/objects/objects-readable-generator.ts +174 -0
  114. package/objects/raw-object.ts +132 -0
  115. package/objects/ref.ts +45 -0
  116. package/objects/repository.ts +780 -0
  117. package/objects/scope-index.spec.ts +95 -0
  118. package/objects/scope-index.ts +197 -0
  119. package/package.json +97 -0
  120. package/types/asset.d.ts +41 -0
  121. package/types/style.d.ts +42 -0
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ function _legacy() {
8
+ const data = require("@teambit/legacy.constants");
9
+ _legacy = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _legacy2() {
15
+ const data = require("@teambit/legacy.utils");
16
+ _legacy2 = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _legacy3() {
22
+ const data = require("@teambit/legacy.scope");
23
+ _legacy3 = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _lodash() {
29
+ const data = require("lodash");
30
+ _lodash = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ 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; }
36
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
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
+ class BitRawObject {
39
+ constructor(buffer, ref, type, content, parsedContent) {
40
+ _defineProperty(this, "headers", void 0);
41
+ _defineProperty(this, "type", void 0);
42
+ _defineProperty(this, "content", void 0);
43
+ _defineProperty(this, "parsedContent", void 0);
44
+ _defineProperty(this, "_ref", void 0);
45
+ let headers;
46
+ let contentFromBuffer;
47
+ if (buffer) {
48
+ const firstNullByteLocation = buffer.indexOf(_legacy().NULL_BYTE);
49
+ headers = buffer.slice(0, firstNullByteLocation).toString();
50
+ contentFromBuffer = buffer.slice(firstNullByteLocation + 1, buffer.length);
51
+ }
52
+ this.content = content || contentFromBuffer;
53
+ this.headers = headers ? headers.split(_legacy().SPACE_DELIMITER) : undefined;
54
+ const typeFromHeader = this.headers ? this.headers[0] : undefined;
55
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
56
+ this.type = type || typeFromHeader;
57
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
58
+ this._ref = ref;
59
+ this.parsedContent = parsedContent || this.getParsedContent();
60
+ }
61
+ getParsedContent() {
62
+ if (this.parsedContent) return this.parsedContent;
63
+ let parsedContent;
64
+ switch (this.type) {
65
+ case 'Version':
66
+ case 'Component':
67
+ case 'Symlink':
68
+ case 'ScopeMeta':
69
+ case 'VersionHistory':
70
+ parsedContent = JSON.parse(this.content.toString());
71
+ break;
72
+ default:
73
+ parsedContent = this.content;
74
+ }
75
+ return parsedContent;
76
+ }
77
+ getString(pretty) {
78
+ const args = (0, _legacy2().getStringifyArgs)(pretty);
79
+ switch (this.type) {
80
+ case 'Version':
81
+ case 'Component':
82
+ case 'Symlink':
83
+ case 'ScopeMeta':
84
+ case 'VersionHistory':
85
+ return JSON.stringify(this.parsedContent, ...args);
86
+ case 'Source':
87
+ return pretty ? JSON.stringify(JSON.parse(this.content.toString()), ...args) : this.content;
88
+ default:
89
+ return this.content;
90
+ }
91
+ }
92
+ set ref(ref) {
93
+ this._ref = ref;
94
+ }
95
+ get ref() {
96
+ return this._ref;
97
+ }
98
+ get id() {
99
+ switch (this.type) {
100
+ case 'Version':
101
+ return 'component version';
102
+ case 'Component':
103
+ return this.parsedContent.scope ? [this.parsedContent.scope, this.parsedContent.name].join('/') : this.parsedContent.name;
104
+ case 'Symlink':
105
+ return this.parsedContent.name;
106
+ case 'ScopeMeta':
107
+ return this.parsedContent.name;
108
+ default:
109
+ return 'component source file';
110
+ }
111
+ }
112
+ refs() {
113
+ if (this.type === 'Component') {
114
+ return Object.values(this.parsedContent.versions);
115
+ }
116
+ if (this.type === 'Version') {
117
+ const files = this.parsedContent.files ? this.parsedContent.files.map(file => file.file) : [];
118
+ const dists = this.parsedContent.dists ? this.parsedContent.dists.map(dist => dist.file) : [];
119
+ return [...dists, ...files].filter(ref => ref);
120
+ }
121
+ return [];
122
+ }
123
+ static async fromDeflatedBuffer(fileContents, ref) {
124
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
125
+ return (0, _legacy2().inflate)(fileContents).then(buffer => new BitRawObject(buffer, ref));
126
+ }
127
+
128
+ /**
129
+ * Build a real object (model) from a parsed content (can be the original parsed conents or a provided one)
130
+ * We use the provided version during the migration process when we change the parsed content outside
131
+ * @param {Any} parsedContent
132
+ */
133
+ toRealObject() {
134
+ return _legacy3().typesObj[this.type].from(this.parsedContent || this.getParsedContent(), this.headers[1]);
135
+ }
136
+ clone() {
137
+ const parsedContent = this.parsedContent ? (0, _lodash().clone)(this.parsedContent) : undefined;
138
+ // TODO: Should also clone the buffers (content)
139
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
140
+ return new BitRawObject(undefined, this._ref, this.type, this.content, parsedContent);
141
+ }
142
+ }
143
+ exports.default = BitRawObject;
144
+
145
+ //# sourceMappingURL=raw-object.js.map
@@ -0,0 +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 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":[]}
@@ -0,0 +1,14 @@
1
+ import type BitObject from './object';
2
+ import type Repository from './repository';
3
+ export default class Ref {
4
+ hash: string;
5
+ constructor(hash: string);
6
+ toString(): string;
7
+ toShortString(numOfChars?: number): string;
8
+ load(repository: Repository, throws?: boolean): Promise<BitObject>;
9
+ loadSync(repo: Repository, throws?: boolean): BitObject;
10
+ loadRaw(repo: Repository): Promise<Buffer>;
11
+ isEqual(ref: Ref): boolean;
12
+ clone(): Ref;
13
+ static from(hash: string): Ref;
14
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ 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; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9
+ 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); }
10
+ class Ref {
11
+ constructor(hash) {
12
+ _defineProperty(this, "hash", void 0);
13
+ if (!hash) throw new Error('failed creating a Ref object, the hash argument is empty');
14
+ this.hash = hash;
15
+ }
16
+ toString() {
17
+ // reason for hash.toString() is when working with short hash, it's possible that all characters are numbers
18
+ // so it's needed to convert it to string
19
+ return this.hash.toString();
20
+ }
21
+ toShortString(numOfChars = 9) {
22
+ return this.hash.substring(0, numOfChars).toString();
23
+ }
24
+ load(repository, throws = false) {
25
+ return repository.load(this, throws);
26
+ }
27
+ loadSync(repo, throws = true) {
28
+ return repo.loadSync(this, throws);
29
+ }
30
+ loadRaw(repo) {
31
+ return repo.loadRaw(this);
32
+ }
33
+ isEqual(ref) {
34
+ return this.toString() === ref.toString();
35
+ }
36
+ clone() {
37
+ return new Ref(this.hash);
38
+ }
39
+ static from(hash) {
40
+ return new Ref(hash);
41
+ }
42
+ }
43
+ exports.default = Ref;
44
+
45
+ //# sourceMappingURL=ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Ref","constructor","hash","_defineProperty","Error","toString","toShortString","numOfChars","substring","load","repository","throws","loadSync","repo","loadRaw","isEqual","ref","clone","from","exports","default"],"sources":["ref.ts"],"sourcesContent":["import type BitObject from './object';\nimport type Repository from './repository';\n\nexport default class Ref {\n hash: string;\n\n constructor(hash: string) {\n if (!hash) throw new Error('failed creating a Ref object, the hash argument is empty');\n this.hash = hash;\n }\n\n toString() {\n // reason for hash.toString() is when working with short hash, it's possible that all characters are numbers\n // so it's needed to convert it to string\n return this.hash.toString();\n }\n\n toShortString(numOfChars = 9) {\n return this.hash.substring(0, numOfChars).toString();\n }\n\n load(repository: Repository, throws = false): Promise<BitObject> {\n return repository.load(this, throws);\n }\n\n loadSync(repo: Repository, throws = true): BitObject {\n return repo.loadSync(this, throws);\n }\n\n loadRaw(repo: Repository): Promise<Buffer> {\n return repo.loadRaw(this);\n }\n\n isEqual(ref: Ref): boolean {\n return this.toString() === ref.toString();\n }\n\n clone() {\n return new Ref(this.hash);\n }\n\n static from(hash: string): Ref {\n return new Ref(hash);\n }\n}\n"],"mappings":";;;;;;;;;AAGe,MAAMA,GAAG,CAAC;EAGvBC,WAAWA,CAACC,IAAY,EAAE;IAAAC,eAAA;IACxB,IAAI,CAACD,IAAI,EAAE,MAAM,IAAIE,KAAK,CAAC,0DAA0D,CAAC;IACtF,IAAI,CAACF,IAAI,GAAGA,IAAI;EAClB;EAEAG,QAAQA,CAAA,EAAG;IACT;IACA;IACA,OAAO,IAAI,CAACH,IAAI,CAACG,QAAQ,CAAC,CAAC;EAC7B;EAEAC,aAAaA,CAACC,UAAU,GAAG,CAAC,EAAE;IAC5B,OAAO,IAAI,CAACL,IAAI,CAACM,SAAS,CAAC,CAAC,EAAED,UAAU,CAAC,CAACF,QAAQ,CAAC,CAAC;EACtD;EAEAI,IAAIA,CAACC,UAAsB,EAAEC,MAAM,GAAG,KAAK,EAAsB;IAC/D,OAAOD,UAAU,CAACD,IAAI,CAAC,IAAI,EAAEE,MAAM,CAAC;EACtC;EAEAC,QAAQA,CAACC,IAAgB,EAAEF,MAAM,GAAG,IAAI,EAAa;IACnD,OAAOE,IAAI,CAACD,QAAQ,CAAC,IAAI,EAAED,MAAM,CAAC;EACpC;EAEAG,OAAOA,CAACD,IAAgB,EAAmB;IACzC,OAAOA,IAAI,CAACC,OAAO,CAAC,IAAI,CAAC;EAC3B;EAEAC,OAAOA,CAACC,GAAQ,EAAW;IACzB,OAAO,IAAI,CAACX,QAAQ,CAAC,CAAC,KAAKW,GAAG,CAACX,QAAQ,CAAC,CAAC;EAC3C;EAEAY,KAAKA,CAAA,EAAG;IACN,OAAO,IAAIjB,GAAG,CAAC,IAAI,CAACE,IAAI,CAAC;EAC3B;EAEA,OAAOgB,IAAIA,CAAChB,IAAY,EAAO;IAC7B,OAAO,IAAIF,GAAG,CAACE,IAAI,CAAC;EACtB;AACF;AAACiB,OAAA,CAAAC,OAAA,GAAApB,GAAA","ignoreList":[]}
@@ -0,0 +1,165 @@
1
+ import { Mutex } from 'async-mutex';
2
+ import type { ComponentID } from '@teambit/component-id';
3
+ import type { PathOsBasedAbsolute } from '@teambit/legacy.utils';
4
+ import type { Types, ScopeJson } from '@teambit/legacy.scope';
5
+ import { UnmergedComponents, RemoteLanes } from '@teambit/legacy.scope';
6
+ import type { IndexType } from './scope-index';
7
+ import { ScopeIndex } from './scope-index';
8
+ import BitObject from './object';
9
+ import type { ObjectItem } from './object-list';
10
+ import { ObjectList } from './object-list';
11
+ import BitRawObject from './raw-object';
12
+ import Ref from './ref';
13
+ import type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';
14
+ type ContentTransformer = (content: Buffer) => Buffer;
15
+ export default class Repository {
16
+ objects: {
17
+ [key: string]: BitObject;
18
+ };
19
+ objectsToRemove: Ref[];
20
+ scopeJson: ScopeJson;
21
+ onRead: ContentTransformer;
22
+ onPersist: ContentTransformer;
23
+ scopePath: string;
24
+ scopeIndex: ScopeIndex;
25
+ protected cache: InMemoryCache<BitObject>;
26
+ remoteLanes: RemoteLanes;
27
+ unmergedComponents: UnmergedComponents;
28
+ _persistMutex?: Mutex;
29
+ constructor(scopePath: string, scopeJson: ScopeJson);
30
+ get persistMutex(): Mutex;
31
+ static load({ scopePath, scopeJson }: {
32
+ scopePath: string;
33
+ scopeJson: ScopeJson;
34
+ }): Promise<Repository>;
35
+ init(): Promise<void>;
36
+ static create({ scopePath, scopeJson }: {
37
+ scopePath: string;
38
+ scopeJson: ScopeJson;
39
+ }): Promise<Repository>;
40
+ static reset(scopePath: string): Promise<void>;
41
+ static getPathByScopePath(scopePath: string): string;
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;
55
+ reLoadScopeIndex(): Promise<void>;
56
+ /**
57
+ * current scope index difference with <scope_folder>/index.json content, reload it
58
+ * @deprecated use Scope aspect `watchSystemFiles` instead, it's way more efficient.
59
+ */
60
+ reloadScopeIndexIfNeed(force?: boolean): Promise<void>;
61
+ ensureDir(): Promise<void>;
62
+ getPath(): string;
63
+ getBackupPath(dirName?: string): string;
64
+ getTrashDir(): string;
65
+ getLicense(): Promise<string>;
66
+ getScopeMetaObject(): Promise<ObjectItem>;
67
+ objectPath(ref: Ref): string;
68
+ has(ref: Ref): Promise<boolean>;
69
+ hasMultiple(refs: Ref[]): Promise<Ref[]>;
70
+ load(ref: Ref, throws?: boolean): Promise<BitObject>;
71
+ /**
72
+ * this is restricted to provide objects according to the given types. Otherwise, big scopes (>1GB) could crush.
73
+ * example usage: `this.list([ModelComponent, Symlink, Lane])`
74
+ */
75
+ list(types: Types): Promise<BitObject[]>;
76
+ loadRefDeleteIfInvalid(ref: Ref): Promise<BitObject | undefined>;
77
+ loadRefOnlyIfType(ref: Ref, types: Types): Promise<BitObject | null>;
78
+ listRefs(cwd?: string): Promise<Array<Ref>>;
79
+ listRefsStartWith(shortHash: Ref): Promise<Array<Ref>>;
80
+ listRawObjects(): Promise<any>;
81
+ listObjectsFromIndex(indexType: IndexType, filter?: Function): Promise<BitObject[]>;
82
+ getHashFromIndex(indexType: IndexType, filter: Function): string | null;
83
+ _getBitObjectsByHashes(hashes: string[]): Promise<BitObject[]>;
84
+ loadOptionallyCreateScopeIndex(): Promise<ScopeIndex>;
85
+ loadRaw(ref: Ref): Promise<Buffer>;
86
+ getFullRefFromShortHash(ref: Ref): Promise<Ref>;
87
+ loadManyRaw(refs: Ref[]): Promise<ObjectItem[]>;
88
+ loadManyRawIgnoreMissing(refs: Ref[]): Promise<ObjectItem[]>;
89
+ loadRawObject(ref: Ref): Promise<BitRawObject>;
90
+ /**
91
+ * prefer using `this.load()` for an async version, which also writes to the cache
92
+ */
93
+ loadSync(ref: Ref, throws?: boolean): BitObject;
94
+ setCache(object: BitObject): this;
95
+ getCache(ref: Ref): BitObject | undefined;
96
+ removeFromCache(ref: Ref): void;
97
+ clearCache(): Promise<void>;
98
+ clearObjectsFromCache(): void;
99
+ backup(dirName?: string): void;
100
+ add(object: BitObject | null | undefined): Repository;
101
+ addMany(objects: BitObject[]): Repository;
102
+ removeObject(ref: Ref): void;
103
+ removeManyObjects(refs: Ref[]): void;
104
+ findMany(refs: Ref[]): Promise<BitObject[]>;
105
+ /**
106
+ * important! use this method only for commands that are non running on an http server.
107
+ *
108
+ * it's better to remove/delete objects directly and not using the `objects` member.
109
+ * it helps to avoid multiple processes running concurrently on an http server.
110
+ *
111
+ * persist objects changes (added and removed) into the filesystem
112
+ * do not call this function multiple times in parallel, otherwise, it'll damage the index.json file.
113
+ * call this function only once after you added and removed all applicable objects.
114
+ */
115
+ persist(validate?: boolean): Promise<void>;
116
+ writeRemoteLanes(): Promise<void>;
117
+ /**
118
+ * this is especially critical for http server, where one process lives long and serves multiple
119
+ * exports. without this, the objects get accumulated over time and being rewritten over and over
120
+ * again.
121
+ */
122
+ private clearObjects;
123
+ /**
124
+ * normally, the validation step takes place just before the acutal writing of the file.
125
+ * however, this can be an issue where a component has an invalid version. the component could
126
+ * be saved before validating the version (see #1727). that's why we validate here before writing
127
+ * anything to the filesystem.
128
+ * the open question here is whether should we validate again before the actual writing or it
129
+ * should be enough to validate here?
130
+ * for now, it does validate again before saving, only to be 100% sure nothing happens in a few
131
+ * lines of code until the actual writing. however, if the performance penalty is noticeable, we
132
+ * can easily revert it by changing `bitObject.validateBeforePersist = false` line run regardless
133
+ * the `validate` argument.
134
+ */
135
+ validateObjects(validate: boolean, objects: BitObject[]): void;
136
+ deleteObjectsFromFS(refs: Ref[]): Promise<void>;
137
+ moveObjectsToDir(refs: Ref[], dir: string): Promise<void>;
138
+ moveObjectsToTrash(refs: Ref[]): Promise<void>;
139
+ listTrash(): Promise<Ref[]>;
140
+ getFromTrash(refs: Ref[]): Promise<BitObject[]>;
141
+ restoreFromTrash(refs: Ref[]): Promise<void>;
142
+ restoreFromDir(dir: string, overwrite?: boolean): Promise<void>;
143
+ private moveOneObjectToDir;
144
+ private moveOneObjectToTrash;
145
+ deleteRecordsFromUnmergedComponents(compIds: ComponentID[]): Promise<void>;
146
+ /**
147
+ * write all objects to the FS and index the components/lanes/symlink objects
148
+ */
149
+ writeObjectsToTheFS(objects: BitObject[]): Promise<void>;
150
+ /**
151
+ * do not call this method directly. always call this.removeObject() and once done with all objects,
152
+ * call this.persist()
153
+ */
154
+ _deleteOne(ref: Ref): Promise<boolean>;
155
+ /**
156
+ * always prefer this.persist() or this.writeObjectsToTheFS()
157
+ * this method doesn't write to scopeIndex. so using this method for ModelComponent or
158
+ * Symlink makes the index outdated.
159
+ */
160
+ _writeOne(object: BitObject): Promise<boolean>;
161
+ writeObjectsToPendingDir(objectList: ObjectList, pendingDir: PathOsBasedAbsolute): Promise<void>;
162
+ readObjectsFromPendingDir(pendingDir: PathOsBasedAbsolute): Promise<ObjectList>;
163
+ private hashPath;
164
+ }
165
+ export {};