@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.
- package/artifacts/__bit_junit.xml +68 -0
- package/artifacts/preview/teambit_scope_objects-preview.js +1 -0
- package/dist/fixtures/version-model-extended.json +48 -0
- package/dist/fixtures/version-model-object.json +87 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +371 -0
- package/dist/index.js.map +1 -0
- package/dist/models/dependencies-graph.d.ts +45 -0
- package/dist/models/dependencies-graph.js +106 -0
- package/dist/models/dependencies-graph.js.map +1 -0
- package/dist/models/detach-heads.d.ts +25 -0
- package/dist/models/detach-heads.js +84 -0
- package/dist/models/detach-heads.js.map +1 -0
- package/dist/models/export-metadata.d.ts +24 -0
- package/dist/models/export-metadata.js +76 -0
- package/dist/models/export-metadata.js.map +1 -0
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.js +125 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/lane-history.d.ts +40 -0
- package/dist/models/lane-history.js +117 -0
- package/dist/models/lane-history.js.map +1 -0
- package/dist/models/lane.d.ts +124 -0
- package/dist/models/lane.js +463 -0
- package/dist/models/lane.js.map +1 -0
- package/dist/models/model-component.d.ts +317 -0
- package/dist/models/model-component.js +1365 -0
- package/dist/models/model-component.js.map +1 -0
- package/dist/models/model-component.spec.d.ts +1 -0
- package/dist/models/model-component.spec.js +71 -0
- package/dist/models/model-component.spec.js.map +1 -0
- package/dist/models/scopeMeta.d.ts +20 -0
- package/dist/models/scopeMeta.js +71 -0
- package/dist/models/scopeMeta.js.map +1 -0
- package/dist/models/source.d.ts +10 -0
- package/dist/models/source.js +43 -0
- package/dist/models/source.js.map +1 -0
- package/dist/models/symlink.d.ts +30 -0
- package/dist/models/symlink.js +91 -0
- package/dist/models/symlink.js.map +1 -0
- package/dist/models/version-history.d.ts +59 -0
- package/dist/models/version-history.js +285 -0
- package/dist/models/version-history.js.map +1 -0
- package/dist/models/version.d.ts +279 -0
- package/dist/models/version.js +777 -0
- package/dist/models/version.js.map +1 -0
- package/dist/models/version.spec.d.ts +1 -0
- package/dist/models/version.spec.js +340 -0
- package/dist/models/version.spec.js.map +1 -0
- package/dist/objects/bit-object-list.d.ts +24 -0
- package/dist/objects/bit-object-list.js +65 -0
- package/dist/objects/bit-object-list.js.map +1 -0
- package/dist/objects/index.d.ts +5 -0
- package/dist/objects/index.js +60 -0
- package/dist/objects/index.js.map +1 -0
- package/dist/objects/object-list-to-graph.d.ts +13 -0
- package/dist/objects/object-list-to-graph.js +93 -0
- package/dist/objects/object-list-to-graph.js.map +1 -0
- package/dist/objects/object-list.d.ts +52 -0
- package/dist/objects/object-list.js +369 -0
- package/dist/objects/object-list.js.map +1 -0
- package/dist/objects/object.d.ts +35 -0
- package/dist/objects/object.js +190 -0
- package/dist/objects/object.js.map +1 -0
- package/dist/objects/objects-readable-generator.d.ts +31 -0
- package/dist/objects/objects-readable-generator.js +192 -0
- package/dist/objects/objects-readable-generator.js.map +1 -0
- package/dist/objects/raw-object.d.ts +23 -0
- package/dist/objects/raw-object.js +155 -0
- package/dist/objects/raw-object.js.map +1 -0
- package/dist/objects/ref.d.ts +14 -0
- package/dist/objects/ref.js +45 -0
- package/dist/objects/ref.js.map +1 -0
- package/dist/objects/repository-hooks.d.ts +4 -0
- package/dist/objects/repository-hooks.js +56 -0
- package/dist/objects/repository-hooks.js.map +1 -0
- package/dist/objects/repository.d.ts +148 -0
- package/dist/objects/repository.js +842 -0
- package/dist/objects/repository.js.map +1 -0
- package/dist/objects/scope-index.d.ts +73 -0
- package/dist/objects/scope-index.js +251 -0
- package/dist/objects/scope-index.js.map +1 -0
- package/dist/objects/scope-index.spec.d.ts +1 -0
- package/dist/objects/scope-index.spec.js +152 -0
- package/dist/objects/scope-index.spec.js.map +1 -0
- package/dist/objects.aspect.d.ts +2 -0
- package/dist/objects.aspect.js +18 -0
- package/dist/objects.aspect.js.map +1 -0
- package/dist/objects.main.runtime.d.ts +7 -0
- package/dist/objects.main.runtime.js +36 -0
- package/dist/objects.main.runtime.js.map +1 -0
- package/dist/preview-1736824735631.js +7 -0
- package/fixtures/version-model-extended.json +48 -0
- package/fixtures/version-model-object.json +87 -0
- package/models/dependencies-graph.ts +119 -0
- package/models/detach-heads.ts +79 -0
- package/models/export-metadata.ts +57 -0
- package/models/index.ts +11 -0
- package/models/lane-history.ts +106 -0
- package/models/lane.ts +367 -0
- package/models/model-component.spec.ts +55 -0
- package/models/model-component.ts +1367 -0
- package/models/scopeMeta.ts +60 -0
- package/models/source.ts +32 -0
- package/models/symlink.ts +66 -0
- package/models/version-history.ts +266 -0
- package/models/version.spec.ts +288 -0
- package/models/version.ts +818 -0
- package/objects/bit-object-list.ts +59 -0
- package/objects/index.ts +6 -0
- package/objects/object-list-to-graph.ts +69 -0
- package/objects/object-list.ts +313 -0
- package/objects/object.ts +153 -0
- package/objects/objects-readable-generator.ts +167 -0
- package/objects/raw-object.ts +142 -0
- package/objects/ref.ts +45 -0
- package/objects/repository-hooks.ts +42 -0
- package/objects/repository.ts +753 -0
- package/objects/scope-index.spec.ts +95 -0
- package/objects/scope-index.ts +192 -0
- package/package.json +98 -0
- package/types/asset.d.ts +41 -0
- package/types/style.d.ts +42 -0
@@ -0,0 +1,777 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
function _lodash() {
|
8
|
+
const data = require("lodash");
|
9
|
+
_lodash = function () {
|
10
|
+
return data;
|
11
|
+
};
|
12
|
+
return data;
|
13
|
+
}
|
14
|
+
function _componentVersion() {
|
15
|
+
const data = require("@teambit/component-version");
|
16
|
+
_componentVersion = function () {
|
17
|
+
return data;
|
18
|
+
};
|
19
|
+
return data;
|
20
|
+
}
|
21
|
+
function _componentId() {
|
22
|
+
const data = require("@teambit/component-id");
|
23
|
+
_componentId = function () {
|
24
|
+
return data;
|
25
|
+
};
|
26
|
+
return data;
|
27
|
+
}
|
28
|
+
function _laneId() {
|
29
|
+
const data = require("@teambit/lane-id");
|
30
|
+
_laneId = function () {
|
31
|
+
return data;
|
32
|
+
};
|
33
|
+
return data;
|
34
|
+
}
|
35
|
+
function _uuid() {
|
36
|
+
const data = require("uuid");
|
37
|
+
_uuid = function () {
|
38
|
+
return data;
|
39
|
+
};
|
40
|
+
return data;
|
41
|
+
}
|
42
|
+
function _legacy() {
|
43
|
+
const data = require("@teambit/legacy.constants");
|
44
|
+
_legacy = function () {
|
45
|
+
return data;
|
46
|
+
};
|
47
|
+
return data;
|
48
|
+
}
|
49
|
+
function _legacy2() {
|
50
|
+
const data = require("@teambit/legacy.consumer-component");
|
51
|
+
_legacy2 = function () {
|
52
|
+
return data;
|
53
|
+
};
|
54
|
+
return data;
|
55
|
+
}
|
56
|
+
function _component() {
|
57
|
+
const data = require("@teambit/component.sources");
|
58
|
+
_component = function () {
|
59
|
+
return data;
|
60
|
+
};
|
61
|
+
return data;
|
62
|
+
}
|
63
|
+
function _legacy3() {
|
64
|
+
const data = require("@teambit/legacy.extension-data");
|
65
|
+
_legacy3 = function () {
|
66
|
+
return data;
|
67
|
+
};
|
68
|
+
return data;
|
69
|
+
}
|
70
|
+
function _legacy4() {
|
71
|
+
const data = require("@teambit/legacy.logger");
|
72
|
+
_legacy4 = function () {
|
73
|
+
return data;
|
74
|
+
};
|
75
|
+
return data;
|
76
|
+
}
|
77
|
+
function _legacy5() {
|
78
|
+
const data = require("@teambit/legacy.utils");
|
79
|
+
_legacy5 = function () {
|
80
|
+
return data;
|
81
|
+
};
|
82
|
+
return data;
|
83
|
+
}
|
84
|
+
function _toolboxCrypto() {
|
85
|
+
const data = require("@teambit/toolbox.crypto.sha1");
|
86
|
+
_toolboxCrypto = function () {
|
87
|
+
return data;
|
88
|
+
};
|
89
|
+
return data;
|
90
|
+
}
|
91
|
+
function _objects() {
|
92
|
+
const data = require("../objects");
|
93
|
+
_objects = function () {
|
94
|
+
return data;
|
95
|
+
};
|
96
|
+
return data;
|
97
|
+
}
|
98
|
+
function _legacy6() {
|
99
|
+
const data = require("@teambit/legacy.scope");
|
100
|
+
_legacy6 = function () {
|
101
|
+
return data;
|
102
|
+
};
|
103
|
+
return data;
|
104
|
+
}
|
105
|
+
function _source() {
|
106
|
+
const data = _interopRequireDefault(require("./source"));
|
107
|
+
_source = function () {
|
108
|
+
return data;
|
109
|
+
};
|
110
|
+
return data;
|
111
|
+
}
|
112
|
+
function _dependenciesGraph() {
|
113
|
+
const data = require("./dependencies-graph");
|
114
|
+
_dependenciesGraph = function () {
|
115
|
+
return data;
|
116
|
+
};
|
117
|
+
return data;
|
118
|
+
}
|
119
|
+
function _bit() {
|
120
|
+
const data = require("@teambit/bit.get-bit-version");
|
121
|
+
_bit = function () {
|
122
|
+
return data;
|
123
|
+
};
|
124
|
+
return data;
|
125
|
+
}
|
126
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
127
|
+
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; }
|
128
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
129
|
+
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); }
|
130
|
+
/**
|
131
|
+
* Represent a version model in the scope
|
132
|
+
*/
|
133
|
+
class Version extends _objects().BitObject {
|
134
|
+
// whether the version is hidden from commands such as "bit log", "bit blame". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)
|
135
|
+
|
136
|
+
constructor(props) {
|
137
|
+
super();
|
138
|
+
_defineProperty(this, "mainFile", void 0);
|
139
|
+
_defineProperty(this, "files", void 0);
|
140
|
+
_defineProperty(this, "log", void 0);
|
141
|
+
_defineProperty(this, "docs", void 0);
|
142
|
+
_defineProperty(this, "dependencies", void 0);
|
143
|
+
_defineProperty(this, "devDependencies", void 0);
|
144
|
+
_defineProperty(this, "peerDependencies", void 0);
|
145
|
+
_defineProperty(this, "flattenedDependencies", void 0);
|
146
|
+
_defineProperty(this, "dependenciesGraphRef", void 0);
|
147
|
+
_defineProperty(this, "_dependenciesGraph", void 0);
|
148
|
+
// caching for the dependencies graph
|
149
|
+
_defineProperty(this, "flattenedEdgesRef", void 0);
|
150
|
+
// ref to a BitObject Source file, which is a JSON object containing the flattened edge
|
151
|
+
_defineProperty(this, "_flattenedEdges", void 0);
|
152
|
+
// caching for the flattenedEdges
|
153
|
+
/**
|
154
|
+
* @deprecated
|
155
|
+
* to get the flattenedEdges, please use `this.getFlattenedEdges()`.
|
156
|
+
* this function handles the backward compatibility and provides the flattened edges regardless whether it was saved
|
157
|
+
* the `flattenedEdgesRef` introduced or after.
|
158
|
+
*
|
159
|
+
* the reason this is left here is not for backward compatibility, but for forward compatibility. meaning, if a
|
160
|
+
* Version object created by the new version is parsed by an old version that doesn't support the flattenedEdgesRef,
|
161
|
+
* then, it'll be able to still get the flattenedEdges by this prop.
|
162
|
+
* this is causing duplication currently. the data is kept in both, `this.flattenedEdges` and the file stored in `flattenedEdgesRef`.
|
163
|
+
* so it'll be best to delete this prop as soon as all scopes are deployed with the new version.
|
164
|
+
* (around August 2023 should be safe)
|
165
|
+
*/
|
166
|
+
_defineProperty(this, "flattenedEdges", void 0);
|
167
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
168
|
+
_defineProperty(this, "packageDependencies", void 0);
|
169
|
+
_defineProperty(this, "devPackageDependencies", void 0);
|
170
|
+
_defineProperty(this, "peerPackageDependencies", void 0);
|
171
|
+
_defineProperty(this, "bindingPrefix", void 0);
|
172
|
+
_defineProperty(this, "schema", void 0);
|
173
|
+
_defineProperty(this, "overrides", void 0);
|
174
|
+
_defineProperty(this, "packageJsonChangedProps", void 0);
|
175
|
+
_defineProperty(this, "_hash", void 0);
|
176
|
+
// reason for the underscore prefix is that we already have hash as a method
|
177
|
+
_defineProperty(this, "parents", void 0);
|
178
|
+
_defineProperty(this, "squashed", void 0);
|
179
|
+
// when a component is squashed during lane-merge
|
180
|
+
_defineProperty(this, "unrelated", void 0);
|
181
|
+
// when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane
|
182
|
+
_defineProperty(this, "extensions", void 0);
|
183
|
+
_defineProperty(this, "buildStatus", void 0);
|
184
|
+
_defineProperty(this, "componentId", void 0);
|
185
|
+
// can help debugging errors when validating Version object
|
186
|
+
_defineProperty(this, "bitVersion", void 0);
|
187
|
+
_defineProperty(this, "modified", []);
|
188
|
+
// currently mutation could happen as a result of either "squash" or "sign".
|
189
|
+
_defineProperty(this, "origin", void 0);
|
190
|
+
// for debugging purposes
|
191
|
+
_defineProperty(this, "hidden", void 0);
|
192
|
+
this.mainFile = props.mainFile;
|
193
|
+
this.files = props.files;
|
194
|
+
this.log = props.log;
|
195
|
+
this.dependencies = new (_legacy2().Dependencies)(props.dependencies);
|
196
|
+
this.devDependencies = new (_legacy2().Dependencies)(props.devDependencies);
|
197
|
+
this.peerDependencies = new (_legacy2().Dependencies)(props.peerDependencies);
|
198
|
+
this.docs = props.docs;
|
199
|
+
this.flattenedDependencies = props.flattenedDependencies || new (_componentId().ComponentIdList)();
|
200
|
+
this.flattenedEdges = props.flattenedEdges || [];
|
201
|
+
this.flattenedEdgesRef = props.flattenedEdgesRef;
|
202
|
+
this.dependenciesGraphRef = props.dependenciesGraphRef;
|
203
|
+
this.packageDependencies = props.packageDependencies || {};
|
204
|
+
this.devPackageDependencies = props.devPackageDependencies || {};
|
205
|
+
this.peerPackageDependencies = props.peerPackageDependencies || {};
|
206
|
+
this.bindingPrefix = props.bindingPrefix;
|
207
|
+
this.schema = props.schema;
|
208
|
+
this.overrides = props.overrides || {};
|
209
|
+
this.packageJsonChangedProps = props.packageJsonChangedProps || {};
|
210
|
+
// @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created
|
211
|
+
this._hash = props.hash;
|
212
|
+
this.parents = props.parents || [];
|
213
|
+
this.squashed = props.squashed;
|
214
|
+
this.unrelated = props.unrelated;
|
215
|
+
this.extensions = props.extensions || _legacy3().ExtensionDataList.fromArray([]);
|
216
|
+
this.buildStatus = props.buildStatus;
|
217
|
+
this.componentId = props.componentId;
|
218
|
+
this.bitVersion = props.bitVersion;
|
219
|
+
this.modified = props.modified || [];
|
220
|
+
this.origin = props.origin;
|
221
|
+
this.hidden = props.hidden;
|
222
|
+
this.validateVersion();
|
223
|
+
}
|
224
|
+
|
225
|
+
/**
|
226
|
+
* use only this method to get the flattened edges (graph of flattened dependencies).
|
227
|
+
* it's backward compatible with the previous way this was stored on the Version object itself.
|
228
|
+
*/
|
229
|
+
async getFlattenedEdges(repo) {
|
230
|
+
const getWithBackwardCompatibility = async () => {
|
231
|
+
if (this.flattenedEdgesRef) {
|
232
|
+
// it's possible that there is a ref but the file is not there.
|
233
|
+
// it can happen if the remote-scope uses an older version that doesn't know to collect this ref.
|
234
|
+
// in which case, the client will get the Version object with the ref prop, but not the Source object.
|
235
|
+
const throws = false;
|
236
|
+
const flattenedEdgesSource = await repo.load(this.flattenedEdgesRef, throws);
|
237
|
+
if (flattenedEdgesSource) {
|
238
|
+
const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());
|
239
|
+
return flattenedEdgesJson.map(item => Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item));
|
240
|
+
}
|
241
|
+
}
|
242
|
+
return this.flattenedEdges || [];
|
243
|
+
};
|
244
|
+
if (!this._flattenedEdges) {
|
245
|
+
this._flattenedEdges = await getWithBackwardCompatibility();
|
246
|
+
}
|
247
|
+
return this._flattenedEdges;
|
248
|
+
}
|
249
|
+
async loadDependenciesGraph(repo) {
|
250
|
+
if (!this._dependenciesGraph) {
|
251
|
+
if (this.dependenciesGraphRef) {
|
252
|
+
// it's possible that there is a ref but the file is not there.
|
253
|
+
// it can happen if the remote-scope uses an older version that doesn't know to collect this ref.
|
254
|
+
// in which case, the client will get the Version object with the ref prop, but not the Source object.
|
255
|
+
const throws = false;
|
256
|
+
const dependenciesGraphSource = await repo.load(this.dependenciesGraphRef, throws);
|
257
|
+
if (dependenciesGraphSource) {
|
258
|
+
this._dependenciesGraph = _dependenciesGraph().DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());
|
259
|
+
}
|
260
|
+
}
|
261
|
+
}
|
262
|
+
return this._dependenciesGraph;
|
263
|
+
}
|
264
|
+
validateVersion() {
|
265
|
+
const nonEmptyFields = ['mainFile', 'files'];
|
266
|
+
nonEmptyFields.forEach(field => {
|
267
|
+
if (!this[field]) {
|
268
|
+
throw new (_legacy6().VersionInvalid)(`failed creating a version object, the field "${field}" can't be empty`);
|
269
|
+
}
|
270
|
+
});
|
271
|
+
}
|
272
|
+
id() {
|
273
|
+
const obj = this.toObject();
|
274
|
+
|
275
|
+
// @todo: remove the entire dependencies.relativePaths from the ID (it's going to be a breaking change)
|
276
|
+
const getDependencies = deps => {
|
277
|
+
const clonedDependencies = deps.cloneAsString();
|
278
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
279
|
+
return clonedDependencies.map(dependency => {
|
280
|
+
return {
|
281
|
+
id: dependency.id,
|
282
|
+
relativePaths: dependency.relativePaths.map(relativePath => {
|
283
|
+
return {
|
284
|
+
sourceRelativePath: relativePath.sourceRelativePath,
|
285
|
+
destinationRelativePath: relativePath.destinationRelativePath
|
286
|
+
};
|
287
|
+
})
|
288
|
+
};
|
289
|
+
});
|
290
|
+
};
|
291
|
+
const getExtensions = extensions => {
|
292
|
+
const sortedConfigOnly = extensions.sortById().toConfigArray();
|
293
|
+
return sortedConfigOnly;
|
294
|
+
};
|
295
|
+
const filterFunction = (val, key) => {
|
296
|
+
if (key === 'devDependencies' || key === 'extensionDependencies' || key === 'devPackageDependencies' || key === 'peerPackageDependencies' || key === 'overrides' || key === 'extensions') {
|
297
|
+
return !(0, _lodash().isEmpty)(val);
|
298
|
+
}
|
299
|
+
return !!val;
|
300
|
+
};
|
301
|
+
return JSON.stringify((0, _lodash().pickBy)({
|
302
|
+
mainFile: obj.mainFile,
|
303
|
+
files: obj.files,
|
304
|
+
log: obj.log,
|
305
|
+
dependencies: getDependencies(this.dependencies),
|
306
|
+
devDependencies: getDependencies(this.devDependencies),
|
307
|
+
extensionDependencies: getDependencies(this.extensionDependencies),
|
308
|
+
packageDependencies: obj.packageDependencies,
|
309
|
+
devPackageDependencies: obj.devPackageDependencies,
|
310
|
+
peerPackageDependencies: obj.peerPackageDependencies,
|
311
|
+
bindingPrefix: obj.bindingPrefix,
|
312
|
+
overrides: obj.overrides,
|
313
|
+
extensions: getExtensions(this.extensions)
|
314
|
+
}, filterFunction));
|
315
|
+
}
|
316
|
+
calculateHash() {
|
317
|
+
return new (_objects().Ref)(_objects().BitObject.makeHash(this.id()));
|
318
|
+
}
|
319
|
+
hash() {
|
320
|
+
if (!this._hash) {
|
321
|
+
throw new Error('hash is missing from a Version object');
|
322
|
+
}
|
323
|
+
return new (_objects().Ref)(this._hash);
|
324
|
+
}
|
325
|
+
get extensionDependencies() {
|
326
|
+
return new (_legacy2().Dependencies)(this.extensions.extensionsBitIds.map(id => new (_legacy2().Dependency)(id, [])));
|
327
|
+
}
|
328
|
+
lastModified() {
|
329
|
+
if (!this.modified || !this.modified.length) return this.log.date;
|
330
|
+
return this.modified[this.modified.length - 1].date;
|
331
|
+
}
|
332
|
+
getAllFlattenedDependencies() {
|
333
|
+
return _componentId().ComponentIdList.fromArray([...this.flattenedDependencies]);
|
334
|
+
}
|
335
|
+
getAllDependencies() {
|
336
|
+
return [...this.dependencies.dependencies, ...this.devDependencies.dependencies, ...this.extensionDependencies.dependencies];
|
337
|
+
}
|
338
|
+
get depsIdsGroupedByType() {
|
339
|
+
return {
|
340
|
+
dependencies: this.dependencies.getAllIds(),
|
341
|
+
devDependencies: this.devDependencies.getAllIds(),
|
342
|
+
peerDependencies: this.peerDependencies.getAllIds(),
|
343
|
+
extensionDependencies: this.extensions.extensionsBitIds
|
344
|
+
};
|
345
|
+
}
|
346
|
+
getAllDependenciesCloned() {
|
347
|
+
const dependencies = [...this.dependencies.getClone(), ...this.devDependencies.getClone()];
|
348
|
+
return new (_legacy2().Dependencies)(dependencies);
|
349
|
+
}
|
350
|
+
getAllDependenciesIds() {
|
351
|
+
const allDependencies = Object.values(this.depsIdsGroupedByType).flat();
|
352
|
+
return _componentId().ComponentIdList.fromArray(allDependencies);
|
353
|
+
}
|
354
|
+
getDependenciesIdsExcludeExtensions() {
|
355
|
+
return _componentId().ComponentIdList.fromArray([...this.dependencies.getAllIds(), ...this.devDependencies.getAllIds()]);
|
356
|
+
}
|
357
|
+
updateFlattenedDependency(currentId, newId) {
|
358
|
+
const getUpdated = flattenedDependencies => {
|
359
|
+
const updatedIds = flattenedDependencies.map(depId => {
|
360
|
+
if (depId.isEqual(currentId)) return newId;
|
361
|
+
return depId;
|
362
|
+
});
|
363
|
+
return _componentId().ComponentIdList.fromArray(updatedIds);
|
364
|
+
};
|
365
|
+
this.flattenedDependencies = getUpdated(this.flattenedDependencies);
|
366
|
+
}
|
367
|
+
refs() {
|
368
|
+
return this.refsWithOptions();
|
369
|
+
}
|
370
|
+
refsWithOptions(includeParents = true, includeArtifacts = true) {
|
371
|
+
const allRefs = [];
|
372
|
+
const extractRefsFromFiles = files => {
|
373
|
+
const refs = files ? files.map(file => file.file) : [];
|
374
|
+
return refs;
|
375
|
+
};
|
376
|
+
const files = extractRefsFromFiles(this.files);
|
377
|
+
allRefs.push(...files);
|
378
|
+
if (includeParents) {
|
379
|
+
allRefs.push(...this.parents);
|
380
|
+
}
|
381
|
+
if (includeArtifacts) {
|
382
|
+
const artifacts = (0, _component().getRefsFromExtensions)(this.extensions);
|
383
|
+
allRefs.push(...artifacts);
|
384
|
+
}
|
385
|
+
if (this.flattenedEdgesRef) allRefs.push(this.flattenedEdgesRef);
|
386
|
+
if (this.dependenciesGraphRef) allRefs.push(this.dependenciesGraphRef);
|
387
|
+
return allRefs;
|
388
|
+
}
|
389
|
+
refsWithoutParents() {
|
390
|
+
const extractRefsFromFiles = files => {
|
391
|
+
const refs = files ? files.map(file => file.file) : [];
|
392
|
+
return refs;
|
393
|
+
};
|
394
|
+
const files = extractRefsFromFiles(this.files);
|
395
|
+
const artifacts = (0, _component().getRefsFromExtensions)(this.extensions);
|
396
|
+
return [...files, ...artifacts].filter(ref => ref);
|
397
|
+
}
|
398
|
+
async collectManyObjects(repo, refs) {
|
399
|
+
return repo.loadManyRaw(refs);
|
400
|
+
}
|
401
|
+
static depEdgeToObject(depEdge) {
|
402
|
+
return {
|
403
|
+
source: depEdge.source.serialize(),
|
404
|
+
target: depEdge.target.serialize(),
|
405
|
+
type: depEdge.type
|
406
|
+
};
|
407
|
+
}
|
408
|
+
static depEdgeFromObject(depEdgeObj) {
|
409
|
+
return {
|
410
|
+
source: _componentId().ComponentID.fromObject(depEdgeObj.source),
|
411
|
+
target: _componentId().ComponentID.fromObject(depEdgeObj.target),
|
412
|
+
type: depEdgeObj.type
|
413
|
+
};
|
414
|
+
}
|
415
|
+
static depEdgeToArray(depEdge) {
|
416
|
+
return [depEdge.source.toString(), depEdge.target.toString(), depEdge.type];
|
417
|
+
}
|
418
|
+
static depEdgeFromArray(depEdgeArr) {
|
419
|
+
const [sourceStr, targetStr, type] = depEdgeArr;
|
420
|
+
return {
|
421
|
+
source: _componentId().ComponentID.fromString(sourceStr),
|
422
|
+
target: _componentId().ComponentID.fromString(targetStr),
|
423
|
+
type: type
|
424
|
+
};
|
425
|
+
}
|
426
|
+
static flattenedEdgeToSource(flattenedEdges) {
|
427
|
+
if (!flattenedEdges) return undefined;
|
428
|
+
// @todo: around August 2024, uncomment this line and delete the next one.
|
429
|
+
// it'll make this object much much smaller (for 604 edges, it's now 143KB, with the array format it's 6KB!)
|
430
|
+
// const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));
|
431
|
+
const flattenedEdgesObj = flattenedEdges.map(f => Version.depEdgeToObject(f));
|
432
|
+
const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));
|
433
|
+
return _source().default.from(flattenedEdgesBuffer);
|
434
|
+
}
|
435
|
+
static dependenciesGraphToSource(dependenciesGraph) {
|
436
|
+
if (!dependenciesGraph) return undefined;
|
437
|
+
const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());
|
438
|
+
return _source().default.from(dependenciesGraphBuffer);
|
439
|
+
}
|
440
|
+
toObject() {
|
441
|
+
const _convertFileToObject = file => {
|
442
|
+
return {
|
443
|
+
file: file.file.toString(),
|
444
|
+
relativePath: file.relativePath,
|
445
|
+
name: file.name,
|
446
|
+
test: file.test
|
447
|
+
};
|
448
|
+
};
|
449
|
+
return (0, _lodash().pickBy)({
|
450
|
+
files: this.files ? this.files.map(_convertFileToObject) : null,
|
451
|
+
mainFile: this.mainFile,
|
452
|
+
bindingPrefix: this.bindingPrefix,
|
453
|
+
schema: this.schema,
|
454
|
+
log: {
|
455
|
+
message: this.log.message,
|
456
|
+
date: this.log.date,
|
457
|
+
username: this.log.username,
|
458
|
+
email: this.log.email
|
459
|
+
},
|
460
|
+
docs: this.docs,
|
461
|
+
dependencies: this.dependencies.cloneAsObject(),
|
462
|
+
devDependencies: this.devDependencies.cloneAsObject(),
|
463
|
+
flattenedDependencies: this.flattenedDependencies.map(dep => dep.toObject()),
|
464
|
+
flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map(f => Version.depEdgeToObject(f)),
|
465
|
+
flattenedEdgesRef: this.flattenedEdgesRef?.toString(),
|
466
|
+
dependenciesGraphRef: this.dependenciesGraphRef?.toString(),
|
467
|
+
extensions: this.extensions.toModelObjects(),
|
468
|
+
packageDependencies: this.packageDependencies,
|
469
|
+
devPackageDependencies: this.devPackageDependencies,
|
470
|
+
peerPackageDependencies: this.peerPackageDependencies,
|
471
|
+
overrides: this.overrides,
|
472
|
+
buildStatus: this.buildStatus,
|
473
|
+
packageJsonChangedProps: this.packageJsonChangedProps,
|
474
|
+
parents: this.parents.map(p => p.toString()),
|
475
|
+
squashed: this.squashed ? {
|
476
|
+
previousParents: this.squashed.previousParents.map(p => p.toString()),
|
477
|
+
laneId: this.squashed.laneId.toObject()
|
478
|
+
} : undefined,
|
479
|
+
unrelated: this.unrelated ? {
|
480
|
+
head: this.unrelated.head.toString(),
|
481
|
+
laneId: this.unrelated.laneId.toObject()
|
482
|
+
} : undefined,
|
483
|
+
bitVersion: this.bitVersion,
|
484
|
+
modified: this.modified,
|
485
|
+
origin: this.origin,
|
486
|
+
hidden: this.hidden
|
487
|
+
}, val => !!val);
|
488
|
+
}
|
489
|
+
validateBeforePersisting(versionStr) {
|
490
|
+
_legacy4().logger.trace(`validating version object, hash: ${this.hash().hash}`);
|
491
|
+
const version = Version.parse(versionStr, this._hash);
|
492
|
+
version.validate();
|
493
|
+
}
|
494
|
+
toBuffer(pretty) {
|
495
|
+
const obj = this.toObject();
|
496
|
+
const args = (0, _legacy5().getStringifyArgs)(pretty);
|
497
|
+
const str = JSON.stringify(obj, ...args);
|
498
|
+
if (this.validateBeforePersist) this.validateBeforePersisting(str);
|
499
|
+
return Buffer.from(str);
|
500
|
+
}
|
501
|
+
/**
|
502
|
+
* used by the super class BitObject
|
503
|
+
*/
|
504
|
+
static parse(contents, hash) {
|
505
|
+
const contentParsed = JSON.parse(contents);
|
506
|
+
const {
|
507
|
+
mainFile,
|
508
|
+
files,
|
509
|
+
bindingPrefix,
|
510
|
+
schema,
|
511
|
+
log,
|
512
|
+
docs,
|
513
|
+
dependencies,
|
514
|
+
devDependencies,
|
515
|
+
flattenedDependencies,
|
516
|
+
flattenedEdges,
|
517
|
+
flattenedEdgesRef,
|
518
|
+
dependenciesGraphRef,
|
519
|
+
flattenedDevDependencies,
|
520
|
+
devPackageDependencies,
|
521
|
+
peerPackageDependencies,
|
522
|
+
packageDependencies,
|
523
|
+
overrides,
|
524
|
+
packageJsonChangedProps,
|
525
|
+
extensions,
|
526
|
+
buildStatus,
|
527
|
+
parents,
|
528
|
+
squashed,
|
529
|
+
unrelated,
|
530
|
+
bitVersion,
|
531
|
+
modified,
|
532
|
+
origin,
|
533
|
+
hidden
|
534
|
+
} = contentParsed;
|
535
|
+
const _getDependencies = (deps = []) => {
|
536
|
+
const getRelativePath = relativePath => {
|
537
|
+
if (relativePath.importSpecifiers) {
|
538
|
+
// backward compatibility. Before the massive validation was added, an item of
|
539
|
+
// relativePath.importSpecifiers array could be missing the mainFile property, which is
|
540
|
+
// an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).
|
541
|
+
relativePath.importSpecifiers = relativePath.importSpecifiers.filter(importSpecifier => importSpecifier.mainFile);
|
542
|
+
if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;
|
543
|
+
}
|
544
|
+
return relativePath;
|
545
|
+
};
|
546
|
+
return deps.map(dependency => {
|
547
|
+
if (!dependency.id.scope) {
|
548
|
+
throw new (_legacy6().BitIdCompIdError)(dependency.id.name);
|
549
|
+
}
|
550
|
+
return new (_legacy2().Dependency)(_componentId().ComponentID.fromObject(dependency.id), Array.isArray(dependency.relativePaths) ? dependency.relativePaths.map(getRelativePath) : dependency.relativePaths);
|
551
|
+
});
|
552
|
+
};
|
553
|
+
const _getFlattenedDependencies = (deps = []) => {
|
554
|
+
return deps.map(dep => _componentId().ComponentID.fromObject(dep));
|
555
|
+
};
|
556
|
+
const _groupFlattenedDependencies = () => {
|
557
|
+
// support backward compatibility. until v15, there was both flattenedDependencies and
|
558
|
+
// flattenedDevDependencies. since then, these both were grouped to one flattenedDependencies
|
559
|
+
const flattenedDeps = _getFlattenedDependencies(flattenedDependencies);
|
560
|
+
const flattenedDevDeps = _getFlattenedDependencies(flattenedDevDependencies);
|
561
|
+
return _componentId().ComponentIdList.fromArray([...flattenedDeps, ...flattenedDevDeps]);
|
562
|
+
};
|
563
|
+
const parseFile = file => {
|
564
|
+
return {
|
565
|
+
file: _objects().Ref.from(file.file),
|
566
|
+
relativePath: file.relativePath,
|
567
|
+
name: file.name,
|
568
|
+
test: file.test
|
569
|
+
};
|
570
|
+
};
|
571
|
+
const _getExtensions = (exts = []) => {
|
572
|
+
if (exts.length) {
|
573
|
+
const newExts = exts.map(extension => {
|
574
|
+
if (extension.extensionId) {
|
575
|
+
const extensionId = _componentId().ComponentID.fromObject(extension.extensionId);
|
576
|
+
const entry = new (_legacy3().ExtensionDataEntry)(undefined, extensionId, undefined, extension.config, extension.data);
|
577
|
+
return entry;
|
578
|
+
}
|
579
|
+
const entry = new (_legacy3().ExtensionDataEntry)(extension.id, undefined, extension.name, extension.config, extension.data);
|
580
|
+
return entry;
|
581
|
+
});
|
582
|
+
return _legacy3().ExtensionDataList.fromModelObject(newExts);
|
583
|
+
}
|
584
|
+
return new (_legacy3().ExtensionDataList)();
|
585
|
+
};
|
586
|
+
return new Version({
|
587
|
+
mainFile,
|
588
|
+
files: files.map(parseFile),
|
589
|
+
bindingPrefix,
|
590
|
+
schema: schema || undefined,
|
591
|
+
log: {
|
592
|
+
// workaround for a bug where the log.message was saved as boolean when running `bit tag -m ""`
|
593
|
+
// the bug was fixed since v0.1.27, but old objects might still have this bug
|
594
|
+
message: typeof log.message !== 'string' ? '' : log.message,
|
595
|
+
date: log.date,
|
596
|
+
username: log.username,
|
597
|
+
email: log.email
|
598
|
+
},
|
599
|
+
docs,
|
600
|
+
dependencies: _getDependencies(dependencies),
|
601
|
+
devDependencies: _getDependencies(devDependencies),
|
602
|
+
flattenedDependencies: _groupFlattenedDependencies(),
|
603
|
+
// backward compatibility. before introducing `flattenedEdgesRef`, we only had `flattenedEdges`. see getFlattenedEdges() for more info.
|
604
|
+
flattenedEdges: flattenedEdgesRef ? [] : flattenedEdges?.map(f => Version.depEdgeFromObject(f)) || [],
|
605
|
+
flattenedEdgesRef: flattenedEdgesRef ? _objects().Ref.from(flattenedEdgesRef) : undefined,
|
606
|
+
dependenciesGraphRef: dependenciesGraphRef ? _objects().Ref.from(dependenciesGraphRef) : undefined,
|
607
|
+
devPackageDependencies,
|
608
|
+
peerPackageDependencies,
|
609
|
+
packageDependencies,
|
610
|
+
overrides,
|
611
|
+
packageJsonChangedProps,
|
612
|
+
hash,
|
613
|
+
parents: parents ? parents.map(p => _objects().Ref.from(p)) : [],
|
614
|
+
squashed: squashed ? {
|
615
|
+
previousParents: squashed.previousParents.map(r => _objects().Ref.from(r)),
|
616
|
+
laneId: new (_laneId().LaneId)(squashed.laneId)
|
617
|
+
} : undefined,
|
618
|
+
unrelated: unrelated ? {
|
619
|
+
head: _objects().Ref.from(unrelated.head),
|
620
|
+
laneId: new (_laneId().LaneId)(unrelated.laneId)
|
621
|
+
} : undefined,
|
622
|
+
extensions: _getExtensions(extensions),
|
623
|
+
buildStatus,
|
624
|
+
bitVersion,
|
625
|
+
modified,
|
626
|
+
origin,
|
627
|
+
hidden
|
628
|
+
});
|
629
|
+
}
|
630
|
+
|
631
|
+
/**
|
632
|
+
* used by raw-object.toRealObject()
|
633
|
+
*/
|
634
|
+
static from(versionProps, hash) {
|
635
|
+
return Version.parse(JSON.stringify(versionProps), hash);
|
636
|
+
}
|
637
|
+
|
638
|
+
/**
|
639
|
+
* Create version model object from consumer component
|
640
|
+
* @param {*} param0
|
641
|
+
*/
|
642
|
+
static fromComponent({
|
643
|
+
component,
|
644
|
+
files,
|
645
|
+
flattenedEdges,
|
646
|
+
dependenciesGraph
|
647
|
+
}) {
|
648
|
+
const parseFile = file => {
|
649
|
+
return {
|
650
|
+
file: file.file.hash(),
|
651
|
+
relativePath: file.relativePath,
|
652
|
+
name: file.name,
|
653
|
+
test: file.test
|
654
|
+
};
|
655
|
+
};
|
656
|
+
if (!component.log) throw new Error('Version.fromComponent - component.log is missing');
|
657
|
+
const version = new Version({
|
658
|
+
mainFile: (0, _legacy5().pathNormalizeToLinux)(component.mainFile),
|
659
|
+
files: files.map(parseFile),
|
660
|
+
bindingPrefix: component.bindingPrefix,
|
661
|
+
log: component.log,
|
662
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
663
|
+
docs: component.docs,
|
664
|
+
dependencies: component.dependencies.get(),
|
665
|
+
devDependencies: component.devDependencies.get(),
|
666
|
+
packageDependencies: component.packageDependencies,
|
667
|
+
devPackageDependencies: component.devPackageDependencies,
|
668
|
+
peerPackageDependencies: component.peerPackageDependencies,
|
669
|
+
dependenciesGraphRef: dependenciesGraph?.hash(),
|
670
|
+
flattenedDependencies: component.flattenedDependencies,
|
671
|
+
// it's safe to remove this line once the version.flattenedEdges prop is deleted
|
672
|
+
flattenedEdges: component.flattenedEdges,
|
673
|
+
flattenedEdgesRef: flattenedEdges?.hash(),
|
674
|
+
schema: component.schema,
|
675
|
+
overrides: component.overrides.componentOverridesData,
|
676
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
677
|
+
packageJsonChangedProps: component.packageJsonChangedProps,
|
678
|
+
extensions: component.extensions,
|
679
|
+
buildStatus: component.buildStatus,
|
680
|
+
componentId: component.id,
|
681
|
+
bitVersion: (0, _bit().getBitVersion)()
|
682
|
+
});
|
683
|
+
if ((0, _componentVersion().isSnap)(component.version)) {
|
684
|
+
version._hash = component.version;
|
685
|
+
} else {
|
686
|
+
version.setNewHash();
|
687
|
+
}
|
688
|
+
return version;
|
689
|
+
}
|
690
|
+
setNewHash() {
|
691
|
+
this._hash = (0, _toolboxCrypto().sha1)((0, _uuid().v4)());
|
692
|
+
}
|
693
|
+
get ignoreSharedDir() {
|
694
|
+
return !(0, _legacy2().isSchemaSupport)(_legacy2().SchemaFeature.sharedDir, this.schema);
|
695
|
+
}
|
696
|
+
get isLegacy() {
|
697
|
+
return !this.schema || this.schema === _legacy2().SchemaName.Legacy;
|
698
|
+
}
|
699
|
+
get originLaneId() {
|
700
|
+
return this.origin?.lane ? new (_laneId().LaneId)({
|
701
|
+
name: this.origin.lane.name,
|
702
|
+
scope: this.origin.lane.scope
|
703
|
+
}) : undefined;
|
704
|
+
}
|
705
|
+
get originId() {
|
706
|
+
return this.origin?.id ? _componentId().ComponentID.fromObject({
|
707
|
+
scope: this.origin.id.scope,
|
708
|
+
name: this.origin.id.name
|
709
|
+
}) : undefined;
|
710
|
+
}
|
711
|
+
setDist(dist) {
|
712
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
713
|
+
this.dist = dist ? {
|
714
|
+
file: dist.hash(),
|
715
|
+
name: _legacy().DEFAULT_BUNDLE_FILENAME
|
716
|
+
} : null;
|
717
|
+
}
|
718
|
+
hasParent(ref) {
|
719
|
+
return this.parents.find(p => p.toString() === ref.toString());
|
720
|
+
}
|
721
|
+
addParent(ref) {
|
722
|
+
if (this.isLegacy) return;
|
723
|
+
if (this.hasParent(ref)) {
|
724
|
+
return; // make sure to not add twice
|
725
|
+
}
|
726
|
+
this.parents.push(ref);
|
727
|
+
}
|
728
|
+
setSquashed(squashData, log, replaceMessage) {
|
729
|
+
this.squashed = squashData;
|
730
|
+
this.addModifiedLog(log);
|
731
|
+
if (replaceMessage) {
|
732
|
+
this.addModifiedLog({
|
733
|
+
username: undefined,
|
734
|
+
email: undefined,
|
735
|
+
date: Date.now().toString(),
|
736
|
+
message: `squashing: replacing the original log.message, which was: "${this.log.message || '<empty>'}"`
|
737
|
+
});
|
738
|
+
this.log.message = replaceMessage;
|
739
|
+
}
|
740
|
+
}
|
741
|
+
setUnrelated(externalHead) {
|
742
|
+
this.unrelated = externalHead;
|
743
|
+
}
|
744
|
+
addModifiedLog(log) {
|
745
|
+
this.modified.push(log);
|
746
|
+
}
|
747
|
+
addAsOnlyParent(ref) {
|
748
|
+
if (this.isLegacy) return;
|
749
|
+
this.parents = [ref];
|
750
|
+
}
|
751
|
+
removeParent(ref) {
|
752
|
+
this.parents = this.parents.filter(p => p.toString() !== ref.toString());
|
753
|
+
}
|
754
|
+
removeAllParents() {
|
755
|
+
this.parents = [];
|
756
|
+
}
|
757
|
+
modelFilesToSourceFiles(repository) {
|
758
|
+
return Promise.all(this.files.map(file => _component().SourceFile.loadFromSourceFileModel(file, repository)));
|
759
|
+
}
|
760
|
+
isRemoved() {
|
761
|
+
return Boolean(this.extensions.findCoreExtension(_legacy().Extensions.remove)?.config?.removed);
|
762
|
+
}
|
763
|
+
shouldRemoveFromMain() {
|
764
|
+
return Boolean(this.extensions.findCoreExtension(_legacy().Extensions.remove)?.config?.removeOnMain);
|
765
|
+
}
|
766
|
+
|
767
|
+
/**
|
768
|
+
* Validate the version model properties, to make sure we are not inserting something
|
769
|
+
* in the wrong format
|
770
|
+
*/
|
771
|
+
validate() {
|
772
|
+
(0, _legacy6().validateVersionInstance)(this);
|
773
|
+
}
|
774
|
+
}
|
775
|
+
exports.default = Version;
|
776
|
+
|
777
|
+
//# sourceMappingURL=version.js.map
|