@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,91 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ function _componentId() {
8
+ const data = require("@teambit/component-id");
9
+ _componentId = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _legacyBitId() {
15
+ const data = require("@teambit/legacy-bit-id");
16
+ _legacyBitId = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _legacy() {
22
+ const data = require("@teambit/legacy.utils");
23
+ _legacy = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _objects() {
29
+ const data = require("../objects");
30
+ _objects = 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
+ /**
39
+ * @deprecated
40
+ * this is not used since component-schema 2.0.0, where the component-id is always the full id.
41
+ */
42
+ class Symlink extends _objects().BitObject {
43
+ constructor(props) {
44
+ super();
45
+ _defineProperty(this, "scope", void 0);
46
+ _defineProperty(this, "name", void 0);
47
+ _defineProperty(this, "realScope", void 0);
48
+ this.scope = props.scope;
49
+ this.name = props.name;
50
+ this.realScope = props.realScope;
51
+ }
52
+ id() {
53
+ return this.name;
54
+ }
55
+ getRealComponentId() {
56
+ return _componentId().ComponentID.fromObject({
57
+ scope: this.realScope,
58
+ name: this.name
59
+ });
60
+ }
61
+ toComponentId() {
62
+ return this.getRealComponentId();
63
+ }
64
+ static parse(contents) {
65
+ const rawContent = JSON.parse(contents.toString());
66
+ if (rawContent.box) rawContent.name = `${rawContent.box}/${rawContent.name}`;
67
+ return Symlink.from(rawContent);
68
+ }
69
+ toObject() {
70
+ return {
71
+ scope: this.scope,
72
+ name: this.name,
73
+ realScope: this.realScope
74
+ };
75
+ }
76
+ toBitId() {
77
+ return new (_legacyBitId().BitId)({
78
+ name: this.name
79
+ });
80
+ }
81
+ toBuffer(pretty) {
82
+ const args = (0, _legacy().getStringifyArgs)(pretty);
83
+ return Buffer.from(JSON.stringify(this.toObject(), ...args));
84
+ }
85
+ static from(props) {
86
+ return new Symlink(props);
87
+ }
88
+ }
89
+ exports.default = Symlink;
90
+
91
+ //# sourceMappingURL=symlink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_componentId","data","require","_legacyBitId","_legacy","_objects","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Symlink","BitObject","constructor","props","scope","name","realScope","id","getRealComponentId","ComponentID","fromObject","toComponentId","parse","contents","rawContent","JSON","toString","box","from","toObject","toBitId","BitId","toBuffer","pretty","args","getStringifyArgs","Buffer","stringify","exports","default"],"sources":["symlink.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport { BitObject } from '../objects';\n\nexport type SymlinkProp = {\n scope: string;\n name: string;\n realScope: string;\n};\n\n/**\n * @deprecated\n * this is not used since component-schema 2.0.0, where the component-id is always the full id.\n */\nexport default class Symlink extends BitObject {\n scope: string;\n name: string;\n realScope: string;\n\n constructor(props: SymlinkProp) {\n super();\n this.scope = props.scope;\n this.name = props.name;\n this.realScope = props.realScope;\n }\n\n id(): string {\n return this.name;\n }\n\n getRealComponentId(): ComponentID {\n return ComponentID.fromObject({ scope: this.realScope, name: this.name });\n }\n\n toComponentId(): ComponentID {\n return this.getRealComponentId();\n }\n\n static parse(contents: Buffer): Symlink {\n const rawContent = JSON.parse(contents.toString());\n if (rawContent.box) rawContent.name = `${rawContent.box}/${rawContent.name}`;\n return Symlink.from(rawContent);\n }\n\n toObject() {\n return {\n scope: this.scope,\n name: this.name,\n realScope: this.realScope,\n };\n }\n\n toBitId(): BitId {\n return new BitId({ name: this.name });\n }\n\n toBuffer(pretty?: boolean) {\n const args = getStringifyArgs(pretty);\n return Buffer.from(JSON.stringify(this.toObject(), ...args));\n }\n\n static from(props: SymlinkProp) {\n return new Symlink(props);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,aAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,YAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,aAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,YAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,SAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,QAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAuC,SAAAK,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAQvC;AACA;AACA;AACA;AACe,MAAMgB,OAAO,SAASC,oBAAS,CAAC;EAK7CC,WAAWA,CAACC,KAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACtB,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACR,IAAI,CAACuB,KAAK,GAAGD,KAAK,CAACC,KAAK;IACxB,IAAI,CAACC,IAAI,GAAGF,KAAK,CAACE,IAAI;IACtB,IAAI,CAACC,SAAS,GAAGH,KAAK,CAACG,SAAS;EAClC;EAEAC,EAAEA,CAAA,EAAW;IACX,OAAO,IAAI,CAACF,IAAI;EAClB;EAEAG,kBAAkBA,CAAA,EAAgB;IAChC,OAAOC,0BAAW,CAACC,UAAU,CAAC;MAAEN,KAAK,EAAE,IAAI,CAACE,SAAS;MAAED,IAAI,EAAE,IAAI,CAACA;IAAK,CAAC,CAAC;EAC3E;EAEAM,aAAaA,CAAA,EAAgB;IAC3B,OAAO,IAAI,CAACH,kBAAkB,CAAC,CAAC;EAClC;EAEA,OAAOI,KAAKA,CAACC,QAAgB,EAAW;IACtC,MAAMC,UAAU,GAAGC,IAAI,CAACH,KAAK,CAACC,QAAQ,CAACG,QAAQ,CAAC,CAAC,CAAC;IAClD,IAAIF,UAAU,CAACG,GAAG,EAAEH,UAAU,CAACT,IAAI,GAAG,GAAGS,UAAU,CAACG,GAAG,IAAIH,UAAU,CAACT,IAAI,EAAE;IAC5E,OAAOL,OAAO,CAACkB,IAAI,CAACJ,UAAU,CAAC;EACjC;EAEAK,QAAQA,CAAA,EAAG;IACT,OAAO;MACLf,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,IAAI,EAAE,IAAI,CAACA,IAAI;MACfC,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC;EACH;EAEAc,OAAOA,CAAA,EAAU;IACf,OAAO,KAAIC,oBAAK,EAAC;MAAEhB,IAAI,EAAE,IAAI,CAACA;IAAK,CAAC,CAAC;EACvC;EAEAiB,QAAQA,CAACC,MAAgB,EAAE;IACzB,MAAMC,IAAI,GAAG,IAAAC,0BAAgB,EAACF,MAAM,CAAC;IACrC,OAAOG,MAAM,CAACR,IAAI,CAACH,IAAI,CAACY,SAAS,CAAC,IAAI,CAACR,QAAQ,CAAC,CAAC,EAAE,GAAGK,IAAI,CAAC,CAAC;EAC9D;EAEA,OAAON,IAAIA,CAACf,KAAkB,EAAE;IAC9B,OAAO,IAAIH,OAAO,CAACG,KAAK,CAAC;EAC3B;AACF;AAACyB,OAAA,CAAAC,OAAA,GAAA7B,OAAA","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ import { Graph } from '@teambit/graph.cleargraph';
2
+ import { ComponentID } from '@teambit/component-id';
3
+ import Ref from '../objects/ref';
4
+ import { BitObject } from '../objects';
5
+ import type Version from './version';
6
+ import ModelComponent from './model-component';
7
+ export type VersionParents = {
8
+ hash: Ref;
9
+ parents: Ref[];
10
+ unrelated?: Ref;
11
+ squashed?: Ref[];
12
+ };
13
+ export type VersionHistoryGraph = Graph<string | HashMetadata, string>;
14
+ type VersionHistoryProps = {
15
+ name: string;
16
+ scope: string;
17
+ versions: VersionParents[];
18
+ graphCompleteRefs?: string[];
19
+ };
20
+ type HashMetadata = {
21
+ tag?: string;
22
+ pointers?: string[];
23
+ };
24
+ export default class VersionHistory extends BitObject {
25
+ name: string;
26
+ scope: string;
27
+ private versionsObj;
28
+ graphCompleteRefs: string[];
29
+ hasChanged: boolean;
30
+ constructor(props: VersionHistoryProps);
31
+ get versions(): VersionParents[];
32
+ private versionParentsToObject;
33
+ id(): string;
34
+ static fromId(name: string, scope: string): VersionHistory;
35
+ toObject(): Record<string, any>;
36
+ toString(pretty: boolean): string;
37
+ toBuffer(pretty: any): Buffer;
38
+ getVersionData(ref: Ref): VersionParents | undefined;
39
+ hasHash(ref: Ref): boolean;
40
+ addFromVersionsObjects(versions: Version[]): void;
41
+ isEmpty(): boolean;
42
+ getAllHashesFrom(start: Ref): {
43
+ found?: string[];
44
+ missing?: string[];
45
+ };
46
+ isRefPartOfHistory(startFrom: Ref, searchFor: Ref): boolean | undefined;
47
+ isGraphCompleteSince(ref: Ref): boolean;
48
+ getAllHashesAsString(): string[];
49
+ merge(versionHistory: VersionHistory): void;
50
+ getAncestor(numOfGenerationsToGoBack: number, ref: Ref): Ref;
51
+ getGraph(modelComponent?: ModelComponent, laneHeads?: {
52
+ [hash: string]: string[];
53
+ }, shortHash?: boolean): VersionHistoryGraph;
54
+ get compId(): ComponentID;
55
+ static create(name: string, scope: string, versions: VersionParents[]): VersionHistory;
56
+ static parse(contents: string): VersionHistory;
57
+ }
58
+ export declare function versionParentsToGraph(versions: VersionParents[]): Graph<string, string>;
59
+ export {};
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ exports.versionParentsToGraph = versionParentsToGraph;
8
+ function _graph() {
9
+ const data = require("@teambit/graph.cleargraph");
10
+ _graph = function () {
11
+ return data;
12
+ };
13
+ return data;
14
+ }
15
+ function _componentId() {
16
+ const data = require("@teambit/component-id");
17
+ _componentId = function () {
18
+ return data;
19
+ };
20
+ return data;
21
+ }
22
+ function _bitError() {
23
+ const data = require("@teambit/bit-error");
24
+ _bitError = function () {
25
+ return data;
26
+ };
27
+ return data;
28
+ }
29
+ function _lodash() {
30
+ const data = require("lodash");
31
+ _lodash = function () {
32
+ return data;
33
+ };
34
+ return data;
35
+ }
36
+ function _legacy() {
37
+ const data = require("@teambit/legacy.utils");
38
+ _legacy = function () {
39
+ return data;
40
+ };
41
+ return data;
42
+ }
43
+ function _ref() {
44
+ const data = _interopRequireDefault(require("../objects/ref"));
45
+ _ref = function () {
46
+ return data;
47
+ };
48
+ return data;
49
+ }
50
+ function _objects() {
51
+ const data = require("../objects");
52
+ _objects = function () {
53
+ return data;
54
+ };
55
+ return data;
56
+ }
57
+ function _component() {
58
+ const data = require("@teambit/component.snap-distance");
59
+ _component = function () {
60
+ return data;
61
+ };
62
+ return data;
63
+ }
64
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
65
+ 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; }
66
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
67
+ 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); }
68
+ class VersionHistory extends _objects().BitObject {
69
+ // whether the version history has changed since the last persist
70
+ constructor(props) {
71
+ super();
72
+ _defineProperty(this, "name", void 0);
73
+ _defineProperty(this, "scope", void 0);
74
+ _defineProperty(this, "versionsObj", void 0);
75
+ _defineProperty(this, "graphCompleteRefs", void 0);
76
+ _defineProperty(this, "hasChanged", false);
77
+ this.name = props.name;
78
+ this.scope = props.scope;
79
+ this.versionsObj = this.versionParentsToObject(props.versions);
80
+ this.graphCompleteRefs = props.graphCompleteRefs || [];
81
+ }
82
+ get versions() {
83
+ return Object.values(this.versionsObj);
84
+ }
85
+ versionParentsToObject(versions) {
86
+ return versions.reduce((acc, version) => {
87
+ acc[version.hash.hash] = version;
88
+ return acc;
89
+ }, {});
90
+ }
91
+ id() {
92
+ return `${this.scope}/${this.name}:${VersionHistory.name}`;
93
+ }
94
+ static fromId(name, scope) {
95
+ return new VersionHistory({
96
+ scope,
97
+ name,
98
+ versions: []
99
+ });
100
+ }
101
+ toObject() {
102
+ return {
103
+ name: this.name,
104
+ scope: this.scope,
105
+ versions: this.versions.map(v => ({
106
+ hash: v.hash.toString(),
107
+ parents: v.parents.map(p => p.toString()),
108
+ unrelated: v.unrelated?.toString(),
109
+ squashed: v.squashed ? v.squashed.map(p => p.toString()) : undefined
110
+ })),
111
+ graphCompleteRefs: this.graphCompleteRefs
112
+ };
113
+ }
114
+ toString(pretty) {
115
+ const args = (0, _legacy().getStringifyArgs)(pretty);
116
+ return JSON.stringify(this.toObject(), ...args);
117
+ }
118
+ toBuffer(pretty) {
119
+ return Buffer.from(this.toString(pretty));
120
+ }
121
+ getVersionData(ref) {
122
+ return this.versionsObj[ref.toString()];
123
+ }
124
+ hasHash(ref) {
125
+ return Boolean(this.getVersionData(ref));
126
+ }
127
+ addFromVersionsObjects(versions) {
128
+ versions.forEach(version => {
129
+ const exists = this.getVersionData(version.hash());
130
+ if (exists) {
131
+ // just in case the parents got updated as a result of a merge/squash
132
+ exists.parents = version.parents;
133
+ exists.unrelated = version.unrelated?.head;
134
+ exists.squashed = version.squashed?.previousParents;
135
+ } else {
136
+ const versionData = (0, _component().getVersionParentsFromVersion)(version);
137
+ this.versionsObj[version.hash().hash] = versionData;
138
+ }
139
+ });
140
+ }
141
+ isEmpty() {
142
+ return !this.versions.length;
143
+ }
144
+ getAllHashesFrom(start) {
145
+ const item = this.getVersionData(start);
146
+ if (!item) return {
147
+ missing: [start.toString()]
148
+ };
149
+ const allHashes = [item.hash.toString()];
150
+ const missing = [];
151
+ const addHashesRecursively = ver => {
152
+ ver.parents.forEach(parent => {
153
+ if (allHashes.includes(parent.toString())) return;
154
+ const parentVer = this.getVersionData(parent);
155
+ if (!parentVer) {
156
+ missing.push(parent.toString());
157
+ return;
158
+ }
159
+ allHashes.push(parent.toString());
160
+ if (parentVer.parents.length) addHashesRecursively(parentVer);
161
+ });
162
+ };
163
+ addHashesRecursively(item);
164
+ return {
165
+ found: allHashes,
166
+ missing
167
+ };
168
+ }
169
+ isRefPartOfHistory(startFrom, searchFor) {
170
+ const {
171
+ found
172
+ } = this.getAllHashesFrom(startFrom);
173
+ return found?.includes(searchFor.toString());
174
+ }
175
+ isGraphCompleteSince(ref) {
176
+ if (this.graphCompleteRefs.includes(ref.toString())) return true;
177
+ const {
178
+ missing
179
+ } = this.getAllHashesFrom(ref);
180
+ const isComplete = !missing || !missing.length;
181
+ if (isComplete) {
182
+ this.graphCompleteRefs.push(ref.toString());
183
+ this.hasChanged = true;
184
+ }
185
+ return isComplete;
186
+ }
187
+ getAllHashesAsString() {
188
+ return Object.keys(this.versionsObj);
189
+ }
190
+ merge(versionHistory) {
191
+ const existingHashes = this.getAllHashesAsString();
192
+ const incomingHashes = versionHistory.getAllHashesAsString();
193
+ const hashesInExistingOnly = (0, _lodash().difference)(existingHashes, incomingHashes);
194
+ const versionsDataOnExistingOnly = this.versions.filter(v => hashesInExistingOnly.includes(v.hash.toString()));
195
+ const newVersions = [...versionHistory.versions, ...versionsDataOnExistingOnly];
196
+ this.versionsObj = this.versionParentsToObject(newVersions);
197
+ }
198
+ getAncestor(numOfGenerationsToGoBack, ref) {
199
+ const errorMsg = `unable to get an older parent of ${this.compId.toString()}`;
200
+ const versionData = this.getVersionData(ref);
201
+ if (!versionData) throw new (_bitError().BitError)(`${errorMsg}, version "${ref.toString()}" was not found in the version history`);
202
+ if (numOfGenerationsToGoBack === 0) return versionData.hash;
203
+ if (!versionData.parents.length) throw new (_bitError().BitError)(`${errorMsg}, version "${ref.toString()}" has no parents`);
204
+ const parent = versionData.parents[0];
205
+ return this.getAncestor(numOfGenerationsToGoBack - 1, parent);
206
+ }
207
+ getGraph(modelComponent, laneHeads, shortHash = false) {
208
+ const refToStr = ref => shortHash ? ref.toShortString() : ref.toString();
209
+ const graph = new (_graph().Graph)();
210
+ const allHashes = this.versions.map(v => (0, _lodash().compact)([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated])).flat();
211
+ const getMetadata = ref => {
212
+ if (!modelComponent || !laneHeads) return undefined;
213
+ const tag = modelComponent.getTagOfRefIfExists(ref);
214
+ const pointers = laneHeads[ref.toString()];
215
+ return {
216
+ tag,
217
+ pointers
218
+ };
219
+ };
220
+ const nodes = allHashes.map(v => new (_graph().Node)(refToStr(v), getMetadata(v) || refToStr(v)));
221
+ const edges = this.versions.map(v => {
222
+ const verEdges = v.parents.map(p => new (_graph().Edge)(refToStr(v.hash), refToStr(p), 'parent'));
223
+ if (v.unrelated) verEdges.push(new (_graph().Edge)(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));
224
+ if (v.squashed) {
225
+ const squashed = v.squashed.filter(s => !v.parents.find(p => p.isEqual(s)));
226
+ squashed.map(p => verEdges.push(new (_graph().Edge)(refToStr(v.hash), refToStr(p), 'squashed')));
227
+ }
228
+ return verEdges;
229
+ }).flat();
230
+ graph.setNodes(nodes);
231
+ graph.setEdges(edges);
232
+ return graph;
233
+ }
234
+ get compId() {
235
+ return _componentId().ComponentID.fromObject({
236
+ scope: this.scope,
237
+ name: this.name
238
+ });
239
+ }
240
+ static create(name, scope, versions) {
241
+ return new VersionHistory({
242
+ name,
243
+ scope,
244
+ versions
245
+ });
246
+ }
247
+ static parse(contents) {
248
+ const parsed = JSON.parse(contents);
249
+ const props = {
250
+ name: parsed.name,
251
+ scope: parsed.scope,
252
+ versions: parsed.versions.map(ver => ({
253
+ hash: _ref().default.from(ver.hash),
254
+ parents: ver.parents.map(p => _ref().default.from(p)),
255
+ unrelated: ver.unrelated ? _ref().default.from(ver.unrelated) : undefined,
256
+ squashed: ver.squashed ? ver.squashed.map(p => _ref().default.from(p)) : undefined
257
+ })),
258
+ graphCompleteRefs: parsed.graphCompleteRefs
259
+ };
260
+ return new VersionHistory(props);
261
+ }
262
+ }
263
+ exports.default = VersionHistory;
264
+ function versionParentsToGraph(versions) {
265
+ const refToStr = ref => ref.toString();
266
+ const graph = new (_graph().Graph)();
267
+ const allHashes = (0, _lodash().uniqBy)(versions.map(v => {
268
+ return (0, _lodash().compact)([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated]);
269
+ }).flat(), 'hash');
270
+ const nodes = allHashes.map(v => new (_graph().Node)(refToStr(v), refToStr(v)));
271
+ const edges = versions.map(v => {
272
+ const verEdges = v.parents.map(p => new (_graph().Edge)(refToStr(v.hash), refToStr(p), 'parent'));
273
+ if (v.unrelated) verEdges.push(new (_graph().Edge)(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));
274
+ if (v.squashed) {
275
+ const squashed = v.squashed.filter(s => !v.parents.find(p => p.isEqual(s)));
276
+ squashed.map(p => verEdges.push(new (_graph().Edge)(refToStr(v.hash), refToStr(p), 'squashed')));
277
+ }
278
+ return verEdges;
279
+ }).flat();
280
+ graph.setNodes(nodes);
281
+ graph.setEdges(edges);
282
+ return graph;
283
+ }
284
+
285
+ //# sourceMappingURL=version-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_graph","data","require","_componentId","_bitError","_lodash","_legacy","_ref","_interopRequireDefault","_objects","_component","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","VersionHistory","BitObject","constructor","props","name","scope","versionsObj","versionParentsToObject","versions","graphCompleteRefs","values","reduce","acc","version","hash","id","fromId","toObject","map","v","toString","parents","p","unrelated","squashed","undefined","pretty","args","getStringifyArgs","JSON","stringify","toBuffer","Buffer","from","getVersionData","ref","hasHash","Boolean","addFromVersionsObjects","forEach","exists","head","previousParents","versionData","getVersionParentsFromVersion","isEmpty","length","getAllHashesFrom","start","item","missing","allHashes","addHashesRecursively","ver","parent","includes","parentVer","push","found","isRefPartOfHistory","startFrom","searchFor","isGraphCompleteSince","isComplete","hasChanged","getAllHashesAsString","keys","merge","versionHistory","existingHashes","incomingHashes","hashesInExistingOnly","difference","versionsDataOnExistingOnly","filter","newVersions","getAncestor","numOfGenerationsToGoBack","errorMsg","compId","BitError","getGraph","modelComponent","laneHeads","shortHash","refToStr","toShortString","graph","Graph","compact","flat","getMetadata","tag","getTagOfRefIfExists","pointers","nodes","Node","edges","verEdges","Edge","s","find","isEqual","setNodes","setEdges","ComponentID","fromObject","create","parse","contents","parsed","Ref","exports","versionParentsToGraph","uniqBy"],"sources":["version-history.ts"],"sourcesContent":["import { Graph, Edge, Node } from '@teambit/graph.cleargraph';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { compact, difference, uniqBy } from 'lodash';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport Ref from '../objects/ref';\nimport { BitObject } from '../objects';\nimport type Version from './version';\nimport { getVersionParentsFromVersion } from '@teambit/component.snap-distance';\nimport ModelComponent from './model-component';\n\nexport type VersionParents = {\n hash: Ref;\n parents: Ref[];\n unrelated?: Ref;\n squashed?: Ref[];\n};\n\nexport type VersionHistoryGraph = Graph<string | HashMetadata, string>;\n\ntype VersionHistoryProps = {\n name: string;\n scope: string;\n versions: VersionParents[];\n graphCompleteRefs?: string[];\n};\n\ntype HashMetadata = {\n tag?: string;\n pointers?: string[];\n};\n\nexport default class VersionHistory extends BitObject {\n name: string;\n scope: string;\n private versionsObj: { [hash: string]: VersionParents };\n graphCompleteRefs: string[];\n hasChanged = false; // whether the version history has changed since the last persist\n constructor(props: VersionHistoryProps) {\n super();\n this.name = props.name;\n this.scope = props.scope;\n this.versionsObj = this.versionParentsToObject(props.versions);\n this.graphCompleteRefs = props.graphCompleteRefs || [];\n }\n\n get versions() {\n return Object.values(this.versionsObj);\n }\n\n private versionParentsToObject(versions: VersionParents[]) {\n return versions.reduce((acc, version) => {\n acc[version.hash.hash] = version;\n return acc;\n }, {});\n }\n\n id() {\n return `${this.scope}/${this.name}:${VersionHistory.name}`;\n }\n\n static fromId(name: string, scope: string) {\n return new VersionHistory({ scope, name, versions: [] });\n }\n\n toObject(): Record<string, any> {\n return {\n name: this.name,\n scope: this.scope,\n versions: this.versions.map((v) => ({\n hash: v.hash.toString(),\n parents: v.parents.map((p) => p.toString()),\n unrelated: v.unrelated?.toString(),\n squashed: v.squashed ? v.squashed.map((p) => p.toString()) : undefined,\n })),\n graphCompleteRefs: this.graphCompleteRefs,\n };\n }\n\n toString(pretty: boolean): string {\n const args = getStringifyArgs(pretty);\n return JSON.stringify(this.toObject(), ...args);\n }\n\n toBuffer(pretty): Buffer {\n return Buffer.from(this.toString(pretty));\n }\n\n getVersionData(ref: Ref): VersionParents | undefined {\n return this.versionsObj[ref.toString()];\n }\n\n hasHash(ref: Ref) {\n return Boolean(this.getVersionData(ref));\n }\n\n addFromVersionsObjects(versions: Version[]) {\n versions.forEach((version) => {\n const exists = this.getVersionData(version.hash());\n if (exists) {\n // just in case the parents got updated as a result of a merge/squash\n exists.parents = version.parents;\n exists.unrelated = version.unrelated?.head;\n exists.squashed = version.squashed?.previousParents;\n } else {\n const versionData = getVersionParentsFromVersion(version);\n this.versionsObj[version.hash().hash] = versionData;\n }\n });\n }\n\n isEmpty() {\n return !this.versions.length;\n }\n\n getAllHashesFrom(start: Ref): { found?: string[]; missing?: string[] } {\n const item = this.getVersionData(start);\n if (!item) return { missing: [start.toString()] };\n const allHashes: string[] = [item.hash.toString()];\n const missing: string[] = [];\n const addHashesRecursively = (ver: VersionParents) => {\n ver.parents.forEach((parent) => {\n if (allHashes.includes(parent.toString())) return;\n const parentVer = this.getVersionData(parent);\n if (!parentVer) {\n missing.push(parent.toString());\n return;\n }\n allHashes.push(parent.toString());\n if (parentVer.parents.length) addHashesRecursively(parentVer);\n });\n };\n addHashesRecursively(item);\n return { found: allHashes, missing };\n }\n\n isRefPartOfHistory(startFrom: Ref, searchFor: Ref) {\n const { found } = this.getAllHashesFrom(startFrom);\n return found?.includes(searchFor.toString());\n }\n\n isGraphCompleteSince(ref: Ref) {\n if (this.graphCompleteRefs.includes(ref.toString())) return true;\n const { missing } = this.getAllHashesFrom(ref);\n const isComplete = !missing || !missing.length;\n if (isComplete) {\n this.graphCompleteRefs.push(ref.toString());\n this.hasChanged = true;\n }\n return isComplete;\n }\n\n getAllHashesAsString(): string[] {\n return Object.keys(this.versionsObj);\n }\n\n merge(versionHistory: VersionHistory) {\n const existingHashes = this.getAllHashesAsString();\n const incomingHashes = versionHistory.getAllHashesAsString();\n const hashesInExistingOnly = difference(existingHashes, incomingHashes);\n const versionsDataOnExistingOnly = this.versions.filter((v) => hashesInExistingOnly.includes(v.hash.toString()));\n const newVersions = [...versionHistory.versions, ...versionsDataOnExistingOnly];\n this.versionsObj = this.versionParentsToObject(newVersions);\n }\n\n getAncestor(numOfGenerationsToGoBack: number, ref: Ref): Ref {\n const errorMsg = `unable to get an older parent of ${this.compId.toString()}`;\n const versionData = this.getVersionData(ref);\n if (!versionData)\n throw new BitError(`${errorMsg}, version \"${ref.toString()}\" was not found in the version history`);\n if (numOfGenerationsToGoBack === 0) return versionData.hash;\n if (!versionData.parents.length) throw new BitError(`${errorMsg}, version \"${ref.toString()}\" has no parents`);\n const parent = versionData.parents[0];\n return this.getAncestor(numOfGenerationsToGoBack - 1, parent);\n }\n\n getGraph(\n modelComponent?: ModelComponent,\n laneHeads?: { [hash: string]: string[] },\n shortHash = false\n ): VersionHistoryGraph {\n const refToStr = (ref: Ref) => (shortHash ? ref.toShortString() : ref.toString());\n const graph = new Graph<string | HashMetadata, string>();\n const allHashes = this.versions\n .map((v) => compact([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated]))\n .flat();\n\n const getMetadata = (ref: Ref): HashMetadata | undefined => {\n if (!modelComponent || !laneHeads) return undefined;\n const tag = modelComponent.getTagOfRefIfExists(ref);\n const pointers = laneHeads[ref.toString()];\n return { tag, pointers };\n };\n const nodes = allHashes.map((v) => new Node(refToStr(v), getMetadata(v) || refToStr(v)));\n const edges = this.versions\n .map((v) => {\n const verEdges = v.parents.map((p) => new Edge(refToStr(v.hash), refToStr(p), 'parent'));\n if (v.unrelated) verEdges.push(new Edge(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));\n if (v.squashed) {\n const squashed = v.squashed.filter((s) => !v.parents.find((p) => p.isEqual(s)));\n squashed.map((p) => verEdges.push(new Edge(refToStr(v.hash), refToStr(p), 'squashed')));\n }\n return verEdges;\n })\n .flat();\n graph.setNodes(nodes);\n graph.setEdges(edges);\n return graph;\n }\n\n get compId() {\n return ComponentID.fromObject({ scope: this.scope, name: this.name });\n }\n\n static create(name: string, scope: string, versions: VersionParents[]) {\n return new VersionHistory({\n name,\n scope,\n versions,\n });\n }\n\n static parse(contents: string): VersionHistory {\n const parsed = JSON.parse(contents);\n const props: VersionHistoryProps = {\n name: parsed.name,\n scope: parsed.scope,\n versions: parsed.versions.map((ver) => ({\n hash: Ref.from(ver.hash),\n parents: ver.parents.map((p) => Ref.from(p)),\n unrelated: ver.unrelated ? Ref.from(ver.unrelated) : undefined,\n squashed: ver.squashed ? ver.squashed.map((p) => Ref.from(p)) : undefined,\n })),\n graphCompleteRefs: parsed.graphCompleteRefs,\n };\n return new VersionHistory(props);\n }\n}\n\nexport function versionParentsToGraph(versions: VersionParents[]): Graph<string, string> {\n const refToStr = (ref: Ref) => ref.toString();\n const graph = new Graph<string, string>();\n const allHashes = uniqBy(\n versions\n .map((v) => {\n return compact([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated]);\n })\n .flat(),\n 'hash'\n );\n const nodes = allHashes.map((v) => new Node(refToStr(v), refToStr(v)));\n const edges = versions\n .map((v) => {\n const verEdges = v.parents.map((p) => new Edge(refToStr(v.hash), refToStr(p), 'parent'));\n if (v.unrelated) verEdges.push(new Edge(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));\n if (v.squashed) {\n const squashed = v.squashed.filter((s) => !v.parents.find((p) => p.isEqual(s)));\n squashed.map((p) => verEdges.push(new Edge(refToStr(v.hash), refToStr(p), 'squashed')));\n }\n return verEdges;\n })\n .flat();\n graph.setNodes(nodes);\n graph.setEdges(edges);\n return graph;\n}\n"],"mappings":"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","ignoreList":[]}