@teambit/api-reference 0.0.0-e375180bb3bf500a71cf2be9a71ea066030d5446 → 0.0.0-e429ff17a2889d7012d3e76813e6c956a0cc79cf

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.
@@ -0,0 +1,206 @@
1
+ .apiCompareContainer {
2
+ display: flex;
3
+ flex-direction: column;
4
+ height: 100%;
5
+ overflow: auto;
6
+ padding: 24px;
7
+ gap: 16px;
8
+ }
9
+
10
+ .summary {
11
+ display: flex;
12
+ gap: 16px;
13
+ align-items: center;
14
+ padding: 12px 16px;
15
+ background: var(--bg-dent, #f5f5f5);
16
+ border-radius: 8px;
17
+ font-size: 14px;
18
+ }
19
+
20
+ .summaryBadge {
21
+ display: inline-flex;
22
+ align-items: center;
23
+ gap: 4px;
24
+ padding: 2px 8px;
25
+ border-radius: 4px;
26
+ font-weight: 500;
27
+ font-size: 12px;
28
+ }
29
+
30
+ .addedBadge {
31
+ composes: summaryBadge;
32
+ background: rgba(46, 160, 67, 0.15);
33
+ color: #2ea043;
34
+ }
35
+
36
+ .removedBadge {
37
+ composes: summaryBadge;
38
+ background: rgba(248, 81, 73, 0.15);
39
+ color: #f85149;
40
+ }
41
+
42
+ .modifiedBadge {
43
+ composes: summaryBadge;
44
+ background: rgba(210, 153, 34, 0.15);
45
+ color: #d29922;
46
+ }
47
+
48
+ .changeList {
49
+ display: flex;
50
+ flex-direction: column;
51
+ gap: 8px;
52
+ }
53
+
54
+ .diffEntry {
55
+ border: 1px solid var(--border-color, #e1e4e8);
56
+ border-radius: 8px;
57
+ overflow: hidden;
58
+ }
59
+
60
+ .diffEntryHeader {
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 12px;
64
+ padding: 12px 16px;
65
+ cursor: pointer;
66
+ user-select: none;
67
+
68
+ &:hover {
69
+ background: var(--bg-dent, #f5f5f5);
70
+ }
71
+ }
72
+
73
+ .statusBadge {
74
+ display: inline-flex;
75
+ align-items: center;
76
+ padding: 2px 8px;
77
+ border-radius: 4px;
78
+ font-weight: 600;
79
+ font-size: 11px;
80
+ text-transform: uppercase;
81
+ letter-spacing: 0.5px;
82
+ flex-shrink: 0;
83
+ }
84
+
85
+ .statusAdded {
86
+ composes: statusBadge;
87
+ background: rgba(46, 160, 67, 0.15);
88
+ color: #2ea043;
89
+ }
90
+
91
+ .statusRemoved {
92
+ composes: statusBadge;
93
+ background: rgba(248, 81, 73, 0.15);
94
+ color: #f85149;
95
+ }
96
+
97
+ .statusModified {
98
+ composes: statusBadge;
99
+ background: rgba(210, 153, 34, 0.15);
100
+ color: #d29922;
101
+ }
102
+
103
+ .exportName {
104
+ font-weight: 600;
105
+ font-size: 14px;
106
+ font-family: var(--font-mono, monospace);
107
+ }
108
+
109
+ .schemaType {
110
+ color: var(--text-tertiary, #8b949e);
111
+ font-size: 12px;
112
+ }
113
+
114
+ .expandIcon {
115
+ margin-left: auto;
116
+ color: var(--text-tertiary, #8b949e);
117
+ font-size: 12px;
118
+ transition: transform 0.2s;
119
+ }
120
+
121
+ .expandIconOpen {
122
+ composes: expandIcon;
123
+ transform: rotate(90deg);
124
+ }
125
+
126
+ .diffEntryBody {
127
+ padding: 0 16px 16px;
128
+ border-top: 1px solid var(--border-color, #e1e4e8);
129
+ }
130
+
131
+ .detailsList {
132
+ list-style: none;
133
+ padding: 12px 0 0;
134
+ margin: 0;
135
+ display: flex;
136
+ flex-direction: column;
137
+ gap: 8px;
138
+ }
139
+
140
+ .detailItem {
141
+ display: flex;
142
+ align-items: flex-start;
143
+ gap: 8px;
144
+ font-size: 13px;
145
+ line-height: 1.5;
146
+ }
147
+
148
+ .detailBullet {
149
+ color: var(--text-tertiary, #8b949e);
150
+ flex-shrink: 0;
151
+ }
152
+
153
+ .detailDescription {
154
+ color: var(--text-primary);
155
+ }
156
+
157
+ .signatureBlock {
158
+ margin-top: 12px;
159
+ padding: 12px;
160
+ background: var(--bg-dent, #f5f5f5);
161
+ border-radius: 4px;
162
+ font-family: var(--font-mono, monospace);
163
+ font-size: 12px;
164
+ white-space: pre-wrap;
165
+ word-break: break-word;
166
+ line-height: 1.6;
167
+ }
168
+
169
+ .signatureLabel {
170
+ font-weight: 600;
171
+ color: var(--text-secondary, #6e7681);
172
+ margin-bottom: 4px;
173
+ font-family: var(--font-sans, sans-serif);
174
+ font-size: 11px;
175
+ text-transform: uppercase;
176
+ letter-spacing: 0.5px;
177
+ }
178
+
179
+ .signatureRemoved {
180
+ composes: signatureBlock;
181
+ text-decoration: line-through;
182
+ opacity: 0.7;
183
+ }
184
+
185
+ .emptyState {
186
+ display: flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ height: 100%;
190
+ color: var(--text-tertiary, #8b949e);
191
+ font-size: 14px;
192
+ }
193
+
194
+ .toggleSignatures {
195
+ background: none;
196
+ border: none;
197
+ color: var(--accent-color, #0366d6);
198
+ font-size: 12px;
199
+ cursor: pointer;
200
+ padding: 4px 0;
201
+ margin-top: 8px;
202
+
203
+ &:hover {
204
+ text-decoration: underline;
205
+ }
206
+ }
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import type { Section } from '@teambit/component';
3
+ import type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';
4
+ import type { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';
5
+ import { APICompare } from './api-compare';
6
+
7
+ // Use string cast since the external ChangeType enum doesn't have API yet
8
+ const ChangeTypeAPI = 'API' as unknown as ChangeType;
9
+
10
+ export class APICompareSection implements TabItem, Section {
11
+ navigationLink = {
12
+ href: 'api',
13
+ children: 'API',
14
+ };
15
+
16
+ props = this.navigationLink;
17
+
18
+ route = {
19
+ path: 'api/*',
20
+ element: <APICompare />,
21
+ };
22
+
23
+ order = 15;
24
+ changeType = ChangeTypeAPI;
25
+ id = 'api';
26
+ }
@@ -0,0 +1,213 @@
1
+ import React from 'react';
2
+ import { useComponentCompare } from '@teambit/component.ui.component-compare.context';
3
+ import type { APIDiffResult, APIDiffChange, APIDiffDetail } from './api-compare.types';
4
+ import styles from './api-compare.module.scss';
5
+
6
+ export type { APIDiffResult, APIDiffChange, APIDiffDetail };
7
+
8
+ function impactClass(impact: string): string {
9
+ switch (impact) {
10
+ case 'BREAKING':
11
+ return styles.removedBadge;
12
+ case 'NON_BREAKING':
13
+ return styles.addedBadge;
14
+ case 'PATCH':
15
+ return styles.modifiedBadge;
16
+ default:
17
+ return styles.summaryBadge;
18
+ }
19
+ }
20
+
21
+ function impactLabel(impact: string): string {
22
+ switch (impact) {
23
+ case 'BREAKING':
24
+ return 'Breaking';
25
+ case 'NON_BREAKING':
26
+ return 'Non-breaking';
27
+ case 'PATCH':
28
+ return 'Patch';
29
+ default:
30
+ return impact;
31
+ }
32
+ }
33
+
34
+ function getStatusClass(status: string): string {
35
+ switch (status) {
36
+ case 'ADDED':
37
+ return styles.statusAdded;
38
+ case 'REMOVED':
39
+ return styles.statusRemoved;
40
+ case 'MODIFIED':
41
+ return styles.statusModified;
42
+ default:
43
+ return styles.statusBadge;
44
+ }
45
+ }
46
+
47
+ function getStatusLabel(status: string): string {
48
+ switch (status) {
49
+ case 'ADDED':
50
+ return '+ Added';
51
+ case 'REMOVED':
52
+ return '- Removed';
53
+ case 'MODIFIED':
54
+ return '~ Modified';
55
+ default:
56
+ return status;
57
+ }
58
+ }
59
+
60
+ function DetailItem({ detail }: { detail: APIDiffDetail }) {
61
+ const dotClass =
62
+ detail.impact === 'BREAKING'
63
+ ? styles.removedBadge
64
+ : detail.impact === 'NON_BREAKING'
65
+ ? styles.addedBadge
66
+ : styles.modifiedBadge;
67
+ return (
68
+ <li className={styles.detailItem}>
69
+ <span
70
+ className={dotClass}
71
+ style={{ width: 6, height: 6, borderRadius: '50%', display: 'inline-block', flexShrink: 0, marginTop: 6 }}
72
+ />
73
+ <span className={styles.detailDescription}>{detail.description}</span>
74
+ </li>
75
+ );
76
+ }
77
+
78
+ function APIDiffEntry({ change }: { change: APIDiffChange }) {
79
+ const [expanded, setExpanded] = React.useState(change.status === 'MODIFIED');
80
+ const [showSignatures, setShowSignatures] = React.useState(false);
81
+
82
+ const hasBody =
83
+ change.status === 'MODIFIED'
84
+ ? (change.changes && change.changes.length > 0) || change.baseSignature || change.compareSignature
85
+ : change.baseSignature || change.compareSignature;
86
+
87
+ return (
88
+ <div className={styles.diffEntry}>
89
+ <div
90
+ className={styles.diffEntryHeader}
91
+ onClick={() => hasBody && setExpanded(!expanded)}
92
+ role="button"
93
+ tabIndex={0}
94
+ onKeyDown={(e) => {
95
+ if (e.key === 'Enter' || e.key === ' ') {
96
+ hasBody && setExpanded(!expanded);
97
+ }
98
+ }}
99
+ >
100
+ <span className={getStatusClass(change.status)}>{getStatusLabel(change.status)}</span>
101
+ <span className={styles.exportName}>{change.exportName}</span>
102
+ <span className={styles.schemaType}>{change.schemaType}</span>
103
+ <span className={impactClass(change.impact)} style={{ fontSize: 10, marginLeft: 'auto' }}>
104
+ {impactLabel(change.impact)}
105
+ </span>
106
+ {hasBody && <span className={expanded ? styles.expandIconOpen : styles.expandIcon}>▶</span>}
107
+ </div>
108
+ {expanded && hasBody && (
109
+ <div className={styles.diffEntryBody}>
110
+ {change.status === 'MODIFIED' && change.changes && change.changes.length > 0 && (
111
+ <ul className={styles.detailsList}>
112
+ {change.changes.map((detail, i) => (
113
+ <DetailItem key={`${detail.aspect}-${i}`} detail={detail} />
114
+ ))}
115
+ </ul>
116
+ )}
117
+ {change.status === 'MODIFIED' && (change.baseSignature || change.compareSignature) && (
118
+ <>
119
+ <button className={styles.toggleSignatures} onClick={() => setShowSignatures(!showSignatures)}>
120
+ {showSignatures ? '▼ Hide signatures' : '▶ Show signatures'}
121
+ </button>
122
+ {showSignatures && (
123
+ <>
124
+ {change.baseSignature && (
125
+ <div>
126
+ <div className={styles.signatureLabel}>Base</div>
127
+ <div className={styles.signatureRemoved}>{change.baseSignature}</div>
128
+ </div>
129
+ )}
130
+ {change.compareSignature && (
131
+ <div>
132
+ <div className={styles.signatureLabel}>Compare</div>
133
+ <div className={styles.signatureBlock}>{change.compareSignature}</div>
134
+ </div>
135
+ )}
136
+ </>
137
+ )}
138
+ </>
139
+ )}
140
+ {change.status === 'ADDED' && change.compareSignature && (
141
+ <div className={styles.signatureBlock}>{change.compareSignature}</div>
142
+ )}
143
+ {change.status === 'REMOVED' && change.baseSignature && (
144
+ <div className={styles.signatureRemoved}>{change.baseSignature}</div>
145
+ )}
146
+ </div>
147
+ )}
148
+ </div>
149
+ );
150
+ }
151
+
152
+ function ChangeSection({ title, changes }: { title: string; changes: APIDiffChange[] }) {
153
+ if (changes.length === 0) return null;
154
+
155
+ const sorted = [...changes].sort((a, b) => {
156
+ const order: Record<string, number> = { REMOVED: 0, MODIFIED: 1, ADDED: 2 };
157
+ return (order[a.status] ?? 3) - (order[b.status] ?? 3);
158
+ });
159
+
160
+ return (
161
+ <>
162
+ <h3
163
+ style={{
164
+ margin: '16px 0 8px',
165
+ fontSize: 13,
166
+ fontWeight: 600,
167
+ textTransform: 'uppercase',
168
+ letterSpacing: '0.5px',
169
+ opacity: 0.6,
170
+ }}
171
+ >
172
+ {title}
173
+ </h3>
174
+ <div className={styles.changeList}>
175
+ {sorted.map((change) => (
176
+ <APIDiffEntry key={`${change.visibility}-${change.status}-${change.exportName}`} change={change} />
177
+ ))}
178
+ </div>
179
+ </>
180
+ );
181
+ }
182
+
183
+ export function APICompare() {
184
+ const compareContext = useComponentCompare();
185
+ const apiDiffResult: APIDiffResult | null | undefined = (compareContext as any)?.apiDiffResult;
186
+
187
+ if (apiDiffResult === undefined) {
188
+ return <div className={styles.emptyState}>Loading API diff...</div>;
189
+ }
190
+
191
+ if (!apiDiffResult || !apiDiffResult.hasChanges) {
192
+ return <div className={styles.emptyState}>No API changes between these versions</div>;
193
+ }
194
+
195
+ const { publicChanges, internalChanges, added, removed, modified, breaking, impact } = apiDiffResult;
196
+
197
+ return (
198
+ <div className={styles.apiCompareContainer}>
199
+ <div className={styles.summary}>
200
+ <span className={impactClass(impact)} style={{ fontWeight: 600 }}>
201
+ {impactLabel(impact)}
202
+ </span>
203
+ <span style={{ opacity: 0.4 }}>|</span>
204
+ {added > 0 && <span className={styles.addedBadge}>+{added} added</span>}
205
+ {removed > 0 && <span className={styles.removedBadge}>-{removed} removed</span>}
206
+ {modified > 0 && <span className={styles.modifiedBadge}>~{modified} modified</span>}
207
+ {breaking > 0 && <span className={styles.removedBadge}>{breaking} breaking</span>}
208
+ </div>
209
+ <ChangeSection title="Public API" changes={publicChanges} />
210
+ <ChangeSection title="Internal (non-exported)" changes={internalChanges} />
211
+ </div>
212
+ );
213
+ }
@@ -17,8 +17,11 @@ import { CodeAspect } from '@teambit/code';
17
17
  import { TaggedExports } from '@teambit/tagged-exports';
18
18
  import type { WorkspaceUI } from '@teambit/workspace';
19
19
  import { WorkspaceAspect } from '@teambit/workspace';
20
+ import type { ComponentCompareUI } from '@teambit/component-compare';
21
+ import { ComponentCompareAspect } from '@teambit/component-compare';
20
22
 
21
23
  import { APIReferenceAspect } from './api-reference.aspect';
24
+ import { APICompareSection } from './api-compare.section';
22
25
 
23
26
  export type APINodeRendererSlot = SlotRegistry<APINodeRenderer[]>;
24
27
  export class APIReferenceUI {
@@ -29,7 +32,7 @@ export class APIReferenceUI {
29
32
  private workspace: WorkspaceUI
30
33
  ) {}
31
34
 
32
- static dependencies = [ComponentAspect, CodeAspect, WorkspaceAspect];
35
+ static dependencies = [ComponentAspect, CodeAspect, WorkspaceAspect, ComponentCompareAspect];
33
36
  static runtime = UIRuntime;
34
37
  static slots = [Slot.withType<APINodeRenderer[]>()];
35
38
 
@@ -69,7 +72,7 @@ export class APIReferenceUI {
69
72
  apiNodeRenderers: APINodeRenderer[] = defaultNodeRenderers;
70
73
 
71
74
  static async provider(
72
- [componentUI, codeUI, workspaceUI]: [ComponentUI, CodeUI, WorkspaceUI],
75
+ [componentUI, codeUI, workspaceUI, componentCompareUI]: [ComponentUI, CodeUI, WorkspaceUI, ComponentCompareUI],
73
76
  _,
74
77
  [apiNodeRendererSlot]: [APINodeRendererSlot],
75
78
  harmony: Harmony
@@ -84,6 +87,11 @@ export class APIReferenceUI {
84
87
  // register all default schema classes
85
88
  apiReferenceUI.registerSchemaClasses(() => Object.values(Schemas));
86
89
 
90
+ // register API compare tab in component compare
91
+ const apiCompareSection = new APICompareSection();
92
+ componentCompareUI.registerNavigation(apiCompareSection);
93
+ componentCompareUI.registerRoutes([apiCompareSection.route]);
94
+
87
95
  return apiReferenceUI;
88
96
  }
89
97
  }
@@ -0,0 +1,3 @@
1
+ import type { APIDiffResult, APIDiffChange, APIDiffDetail } from './api-compare.types';
2
+ export type { APIDiffResult, APIDiffChange, APIDiffDetail };
3
+ export declare function APICompare(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.APICompare = APICompare;
7
+ function _react() {
8
+ const data = _interopRequireDefault(require("react"));
9
+ _react = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _componentUiComponentCompare() {
15
+ const data = require("@teambit/component.ui.component-compare.context");
16
+ _componentUiComponentCompare = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _apiCompareModule() {
22
+ const data = _interopRequireDefault(require("./api-compare.module.scss"));
23
+ _apiCompareModule = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
+ function impactClass(impact) {
30
+ switch (impact) {
31
+ case 'BREAKING':
32
+ return _apiCompareModule().default.removedBadge;
33
+ case 'NON_BREAKING':
34
+ return _apiCompareModule().default.addedBadge;
35
+ case 'PATCH':
36
+ return _apiCompareModule().default.modifiedBadge;
37
+ default:
38
+ return _apiCompareModule().default.summaryBadge;
39
+ }
40
+ }
41
+ function impactLabel(impact) {
42
+ switch (impact) {
43
+ case 'BREAKING':
44
+ return 'Breaking';
45
+ case 'NON_BREAKING':
46
+ return 'Non-breaking';
47
+ case 'PATCH':
48
+ return 'Patch';
49
+ default:
50
+ return impact;
51
+ }
52
+ }
53
+ function getStatusClass(status) {
54
+ switch (status) {
55
+ case 'ADDED':
56
+ return _apiCompareModule().default.statusAdded;
57
+ case 'REMOVED':
58
+ return _apiCompareModule().default.statusRemoved;
59
+ case 'MODIFIED':
60
+ return _apiCompareModule().default.statusModified;
61
+ default:
62
+ return _apiCompareModule().default.statusBadge;
63
+ }
64
+ }
65
+ function getStatusLabel(status) {
66
+ switch (status) {
67
+ case 'ADDED':
68
+ return '+ Added';
69
+ case 'REMOVED':
70
+ return '- Removed';
71
+ case 'MODIFIED':
72
+ return '~ Modified';
73
+ default:
74
+ return status;
75
+ }
76
+ }
77
+ function DetailItem({
78
+ detail
79
+ }) {
80
+ const dotClass = detail.impact === 'BREAKING' ? _apiCompareModule().default.removedBadge : detail.impact === 'NON_BREAKING' ? _apiCompareModule().default.addedBadge : _apiCompareModule().default.modifiedBadge;
81
+ return /*#__PURE__*/_react().default.createElement("li", {
82
+ className: _apiCompareModule().default.detailItem
83
+ }, /*#__PURE__*/_react().default.createElement("span", {
84
+ className: dotClass,
85
+ style: {
86
+ width: 6,
87
+ height: 6,
88
+ borderRadius: '50%',
89
+ display: 'inline-block',
90
+ flexShrink: 0,
91
+ marginTop: 6
92
+ }
93
+ }), /*#__PURE__*/_react().default.createElement("span", {
94
+ className: _apiCompareModule().default.detailDescription
95
+ }, detail.description));
96
+ }
97
+ function APIDiffEntry({
98
+ change
99
+ }) {
100
+ const [expanded, setExpanded] = _react().default.useState(change.status === 'MODIFIED');
101
+ const [showSignatures, setShowSignatures] = _react().default.useState(false);
102
+ const hasBody = change.status === 'MODIFIED' ? change.changes && change.changes.length > 0 || change.baseSignature || change.compareSignature : change.baseSignature || change.compareSignature;
103
+ return /*#__PURE__*/_react().default.createElement("div", {
104
+ className: _apiCompareModule().default.diffEntry
105
+ }, /*#__PURE__*/_react().default.createElement("div", {
106
+ className: _apiCompareModule().default.diffEntryHeader,
107
+ onClick: () => hasBody && setExpanded(!expanded),
108
+ role: "button",
109
+ tabIndex: 0,
110
+ onKeyDown: e => {
111
+ if (e.key === 'Enter' || e.key === ' ') {
112
+ hasBody && setExpanded(!expanded);
113
+ }
114
+ }
115
+ }, /*#__PURE__*/_react().default.createElement("span", {
116
+ className: getStatusClass(change.status)
117
+ }, getStatusLabel(change.status)), /*#__PURE__*/_react().default.createElement("span", {
118
+ className: _apiCompareModule().default.exportName
119
+ }, change.exportName), /*#__PURE__*/_react().default.createElement("span", {
120
+ className: _apiCompareModule().default.schemaType
121
+ }, change.schemaType), /*#__PURE__*/_react().default.createElement("span", {
122
+ className: impactClass(change.impact),
123
+ style: {
124
+ fontSize: 10,
125
+ marginLeft: 'auto'
126
+ }
127
+ }, impactLabel(change.impact)), hasBody && /*#__PURE__*/_react().default.createElement("span", {
128
+ className: expanded ? _apiCompareModule().default.expandIconOpen : _apiCompareModule().default.expandIcon
129
+ }, "\u25B6")), expanded && hasBody && /*#__PURE__*/_react().default.createElement("div", {
130
+ className: _apiCompareModule().default.diffEntryBody
131
+ }, change.status === 'MODIFIED' && change.changes && change.changes.length > 0 && /*#__PURE__*/_react().default.createElement("ul", {
132
+ className: _apiCompareModule().default.detailsList
133
+ }, change.changes.map((detail, i) => /*#__PURE__*/_react().default.createElement(DetailItem, {
134
+ key: `${detail.aspect}-${i}`,
135
+ detail: detail
136
+ }))), change.status === 'MODIFIED' && (change.baseSignature || change.compareSignature) && /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, /*#__PURE__*/_react().default.createElement("button", {
137
+ className: _apiCompareModule().default.toggleSignatures,
138
+ onClick: () => setShowSignatures(!showSignatures)
139
+ }, showSignatures ? '▼ Hide signatures' : '▶ Show signatures'), showSignatures && /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, change.baseSignature && /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement("div", {
140
+ className: _apiCompareModule().default.signatureLabel
141
+ }, "Base"), /*#__PURE__*/_react().default.createElement("div", {
142
+ className: _apiCompareModule().default.signatureRemoved
143
+ }, change.baseSignature)), change.compareSignature && /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement("div", {
144
+ className: _apiCompareModule().default.signatureLabel
145
+ }, "Compare"), /*#__PURE__*/_react().default.createElement("div", {
146
+ className: _apiCompareModule().default.signatureBlock
147
+ }, change.compareSignature)))), change.status === 'ADDED' && change.compareSignature && /*#__PURE__*/_react().default.createElement("div", {
148
+ className: _apiCompareModule().default.signatureBlock
149
+ }, change.compareSignature), change.status === 'REMOVED' && change.baseSignature && /*#__PURE__*/_react().default.createElement("div", {
150
+ className: _apiCompareModule().default.signatureRemoved
151
+ }, change.baseSignature)));
152
+ }
153
+ function ChangeSection({
154
+ title,
155
+ changes
156
+ }) {
157
+ if (changes.length === 0) return null;
158
+ const sorted = [...changes].sort((a, b) => {
159
+ const order = {
160
+ REMOVED: 0,
161
+ MODIFIED: 1,
162
+ ADDED: 2
163
+ };
164
+ return (order[a.status] ?? 3) - (order[b.status] ?? 3);
165
+ });
166
+ return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, /*#__PURE__*/_react().default.createElement("h3", {
167
+ style: {
168
+ margin: '16px 0 8px',
169
+ fontSize: 13,
170
+ fontWeight: 600,
171
+ textTransform: 'uppercase',
172
+ letterSpacing: '0.5px',
173
+ opacity: 0.6
174
+ }
175
+ }, title), /*#__PURE__*/_react().default.createElement("div", {
176
+ className: _apiCompareModule().default.changeList
177
+ }, sorted.map(change => /*#__PURE__*/_react().default.createElement(APIDiffEntry, {
178
+ key: `${change.visibility}-${change.status}-${change.exportName}`,
179
+ change: change
180
+ }))));
181
+ }
182
+ function APICompare() {
183
+ const compareContext = (0, _componentUiComponentCompare().useComponentCompare)();
184
+ const apiDiffResult = compareContext?.apiDiffResult;
185
+ if (apiDiffResult === undefined) {
186
+ return /*#__PURE__*/_react().default.createElement("div", {
187
+ className: _apiCompareModule().default.emptyState
188
+ }, "Loading API diff...");
189
+ }
190
+ if (!apiDiffResult || !apiDiffResult.hasChanges) {
191
+ return /*#__PURE__*/_react().default.createElement("div", {
192
+ className: _apiCompareModule().default.emptyState
193
+ }, "No API changes between these versions");
194
+ }
195
+ const {
196
+ publicChanges,
197
+ internalChanges,
198
+ added,
199
+ removed,
200
+ modified,
201
+ breaking,
202
+ impact
203
+ } = apiDiffResult;
204
+ return /*#__PURE__*/_react().default.createElement("div", {
205
+ className: _apiCompareModule().default.apiCompareContainer
206
+ }, /*#__PURE__*/_react().default.createElement("div", {
207
+ className: _apiCompareModule().default.summary
208
+ }, /*#__PURE__*/_react().default.createElement("span", {
209
+ className: impactClass(impact),
210
+ style: {
211
+ fontWeight: 600
212
+ }
213
+ }, impactLabel(impact)), /*#__PURE__*/_react().default.createElement("span", {
214
+ style: {
215
+ opacity: 0.4
216
+ }
217
+ }, "|"), added > 0 && /*#__PURE__*/_react().default.createElement("span", {
218
+ className: _apiCompareModule().default.addedBadge
219
+ }, "+", added, " added"), removed > 0 && /*#__PURE__*/_react().default.createElement("span", {
220
+ className: _apiCompareModule().default.removedBadge
221
+ }, "-", removed, " removed"), modified > 0 && /*#__PURE__*/_react().default.createElement("span", {
222
+ className: _apiCompareModule().default.modifiedBadge
223
+ }, "~", modified, " modified"), breaking > 0 && /*#__PURE__*/_react().default.createElement("span", {
224
+ className: _apiCompareModule().default.removedBadge
225
+ }, breaking, " breaking")), /*#__PURE__*/_react().default.createElement(ChangeSection, {
226
+ title: "Public API",
227
+ changes: publicChanges
228
+ }), /*#__PURE__*/_react().default.createElement(ChangeSection, {
229
+ title: "Internal (non-exported)",
230
+ changes: internalChanges
231
+ }));
232
+ }
233
+
234
+ //# sourceMappingURL=api-compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","_componentUiComponentCompare","_apiCompareModule","e","__esModule","default","impactClass","impact","styles","removedBadge","addedBadge","modifiedBadge","summaryBadge","impactLabel","getStatusClass","status","statusAdded","statusRemoved","statusModified","statusBadge","getStatusLabel","DetailItem","detail","dotClass","createElement","className","detailItem","style","width","height","borderRadius","display","flexShrink","marginTop","detailDescription","description","APIDiffEntry","change","expanded","setExpanded","React","useState","showSignatures","setShowSignatures","hasBody","changes","length","baseSignature","compareSignature","diffEntry","diffEntryHeader","onClick","role","tabIndex","onKeyDown","key","exportName","schemaType","fontSize","marginLeft","expandIconOpen","expandIcon","diffEntryBody","detailsList","map","i","aspect","Fragment","toggleSignatures","signatureLabel","signatureRemoved","signatureBlock","ChangeSection","title","sorted","sort","a","b","order","REMOVED","MODIFIED","ADDED","margin","fontWeight","textTransform","letterSpacing","opacity","changeList","visibility","APICompare","compareContext","useComponentCompare","apiDiffResult","undefined","emptyState","hasChanges","publicChanges","internalChanges","added","removed","modified","breaking","apiCompareContainer","summary"],"sources":["api-compare.tsx"],"sourcesContent":["import React from 'react';\nimport { useComponentCompare } from '@teambit/component.ui.component-compare.context';\nimport type { APIDiffResult, APIDiffChange, APIDiffDetail } from './api-compare.types';\nimport styles from './api-compare.module.scss';\n\nexport type { APIDiffResult, APIDiffChange, APIDiffDetail };\n\nfunction impactClass(impact: string): string {\n switch (impact) {\n case 'BREAKING':\n return styles.removedBadge;\n case 'NON_BREAKING':\n return styles.addedBadge;\n case 'PATCH':\n return styles.modifiedBadge;\n default:\n return styles.summaryBadge;\n }\n}\n\nfunction impactLabel(impact: string): string {\n switch (impact) {\n case 'BREAKING':\n return 'Breaking';\n case 'NON_BREAKING':\n return 'Non-breaking';\n case 'PATCH':\n return 'Patch';\n default:\n return impact;\n }\n}\n\nfunction getStatusClass(status: string): string {\n switch (status) {\n case 'ADDED':\n return styles.statusAdded;\n case 'REMOVED':\n return styles.statusRemoved;\n case 'MODIFIED':\n return styles.statusModified;\n default:\n return styles.statusBadge;\n }\n}\n\nfunction getStatusLabel(status: string): string {\n switch (status) {\n case 'ADDED':\n return '+ Added';\n case 'REMOVED':\n return '- Removed';\n case 'MODIFIED':\n return '~ Modified';\n default:\n return status;\n }\n}\n\nfunction DetailItem({ detail }: { detail: APIDiffDetail }) {\n const dotClass =\n detail.impact === 'BREAKING'\n ? styles.removedBadge\n : detail.impact === 'NON_BREAKING'\n ? styles.addedBadge\n : styles.modifiedBadge;\n return (\n <li className={styles.detailItem}>\n <span\n className={dotClass}\n style={{ width: 6, height: 6, borderRadius: '50%', display: 'inline-block', flexShrink: 0, marginTop: 6 }}\n />\n <span className={styles.detailDescription}>{detail.description}</span>\n </li>\n );\n}\n\nfunction APIDiffEntry({ change }: { change: APIDiffChange }) {\n const [expanded, setExpanded] = React.useState(change.status === 'MODIFIED');\n const [showSignatures, setShowSignatures] = React.useState(false);\n\n const hasBody =\n change.status === 'MODIFIED'\n ? (change.changes && change.changes.length > 0) || change.baseSignature || change.compareSignature\n : change.baseSignature || change.compareSignature;\n\n return (\n <div className={styles.diffEntry}>\n <div\n className={styles.diffEntryHeader}\n onClick={() => hasBody && setExpanded(!expanded)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n hasBody && setExpanded(!expanded);\n }\n }}\n >\n <span className={getStatusClass(change.status)}>{getStatusLabel(change.status)}</span>\n <span className={styles.exportName}>{change.exportName}</span>\n <span className={styles.schemaType}>{change.schemaType}</span>\n <span className={impactClass(change.impact)} style={{ fontSize: 10, marginLeft: 'auto' }}>\n {impactLabel(change.impact)}\n </span>\n {hasBody && <span className={expanded ? styles.expandIconOpen : styles.expandIcon}>▶</span>}\n </div>\n {expanded && hasBody && (\n <div className={styles.diffEntryBody}>\n {change.status === 'MODIFIED' && change.changes && change.changes.length > 0 && (\n <ul className={styles.detailsList}>\n {change.changes.map((detail, i) => (\n <DetailItem key={`${detail.aspect}-${i}`} detail={detail} />\n ))}\n </ul>\n )}\n {change.status === 'MODIFIED' && (change.baseSignature || change.compareSignature) && (\n <>\n <button className={styles.toggleSignatures} onClick={() => setShowSignatures(!showSignatures)}>\n {showSignatures ? '▼ Hide signatures' : '▶ Show signatures'}\n </button>\n {showSignatures && (\n <>\n {change.baseSignature && (\n <div>\n <div className={styles.signatureLabel}>Base</div>\n <div className={styles.signatureRemoved}>{change.baseSignature}</div>\n </div>\n )}\n {change.compareSignature && (\n <div>\n <div className={styles.signatureLabel}>Compare</div>\n <div className={styles.signatureBlock}>{change.compareSignature}</div>\n </div>\n )}\n </>\n )}\n </>\n )}\n {change.status === 'ADDED' && change.compareSignature && (\n <div className={styles.signatureBlock}>{change.compareSignature}</div>\n )}\n {change.status === 'REMOVED' && change.baseSignature && (\n <div className={styles.signatureRemoved}>{change.baseSignature}</div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nfunction ChangeSection({ title, changes }: { title: string; changes: APIDiffChange[] }) {\n if (changes.length === 0) return null;\n\n const sorted = [...changes].sort((a, b) => {\n const order: Record<string, number> = { REMOVED: 0, MODIFIED: 1, ADDED: 2 };\n return (order[a.status] ?? 3) - (order[b.status] ?? 3);\n });\n\n return (\n <>\n <h3\n style={{\n margin: '16px 0 8px',\n fontSize: 13,\n fontWeight: 600,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n opacity: 0.6,\n }}\n >\n {title}\n </h3>\n <div className={styles.changeList}>\n {sorted.map((change) => (\n <APIDiffEntry key={`${change.visibility}-${change.status}-${change.exportName}`} change={change} />\n ))}\n </div>\n </>\n );\n}\n\nexport function APICompare() {\n const compareContext = useComponentCompare();\n const apiDiffResult: APIDiffResult | null | undefined = (compareContext as any)?.apiDiffResult;\n\n if (apiDiffResult === undefined) {\n return <div className={styles.emptyState}>Loading API diff...</div>;\n }\n\n if (!apiDiffResult || !apiDiffResult.hasChanges) {\n return <div className={styles.emptyState}>No API changes between these versions</div>;\n }\n\n const { publicChanges, internalChanges, added, removed, modified, breaking, impact } = apiDiffResult;\n\n return (\n <div className={styles.apiCompareContainer}>\n <div className={styles.summary}>\n <span className={impactClass(impact)} style={{ fontWeight: 600 }}>\n {impactLabel(impact)}\n </span>\n <span style={{ opacity: 0.4 }}>|</span>\n {added > 0 && <span className={styles.addedBadge}>+{added} added</span>}\n {removed > 0 && <span className={styles.removedBadge}>-{removed} removed</span>}\n {modified > 0 && <span className={styles.modifiedBadge}>~{modified} modified</span>}\n {breaking > 0 && <span className={styles.removedBadge}>{breaking} breaking</span>}\n </div>\n <ChangeSection title=\"Public API\" changes={publicChanges} />\n <ChangeSection title=\"Internal (non-exported)\" changes={internalChanges} />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,206 @@
1
+ .apiCompareContainer {
2
+ display: flex;
3
+ flex-direction: column;
4
+ height: 100%;
5
+ overflow: auto;
6
+ padding: 24px;
7
+ gap: 16px;
8
+ }
9
+
10
+ .summary {
11
+ display: flex;
12
+ gap: 16px;
13
+ align-items: center;
14
+ padding: 12px 16px;
15
+ background: var(--bg-dent, #f5f5f5);
16
+ border-radius: 8px;
17
+ font-size: 14px;
18
+ }
19
+
20
+ .summaryBadge {
21
+ display: inline-flex;
22
+ align-items: center;
23
+ gap: 4px;
24
+ padding: 2px 8px;
25
+ border-radius: 4px;
26
+ font-weight: 500;
27
+ font-size: 12px;
28
+ }
29
+
30
+ .addedBadge {
31
+ composes: summaryBadge;
32
+ background: rgba(46, 160, 67, 0.15);
33
+ color: #2ea043;
34
+ }
35
+
36
+ .removedBadge {
37
+ composes: summaryBadge;
38
+ background: rgba(248, 81, 73, 0.15);
39
+ color: #f85149;
40
+ }
41
+
42
+ .modifiedBadge {
43
+ composes: summaryBadge;
44
+ background: rgba(210, 153, 34, 0.15);
45
+ color: #d29922;
46
+ }
47
+
48
+ .changeList {
49
+ display: flex;
50
+ flex-direction: column;
51
+ gap: 8px;
52
+ }
53
+
54
+ .diffEntry {
55
+ border: 1px solid var(--border-color, #e1e4e8);
56
+ border-radius: 8px;
57
+ overflow: hidden;
58
+ }
59
+
60
+ .diffEntryHeader {
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 12px;
64
+ padding: 12px 16px;
65
+ cursor: pointer;
66
+ user-select: none;
67
+
68
+ &:hover {
69
+ background: var(--bg-dent, #f5f5f5);
70
+ }
71
+ }
72
+
73
+ .statusBadge {
74
+ display: inline-flex;
75
+ align-items: center;
76
+ padding: 2px 8px;
77
+ border-radius: 4px;
78
+ font-weight: 600;
79
+ font-size: 11px;
80
+ text-transform: uppercase;
81
+ letter-spacing: 0.5px;
82
+ flex-shrink: 0;
83
+ }
84
+
85
+ .statusAdded {
86
+ composes: statusBadge;
87
+ background: rgba(46, 160, 67, 0.15);
88
+ color: #2ea043;
89
+ }
90
+
91
+ .statusRemoved {
92
+ composes: statusBadge;
93
+ background: rgba(248, 81, 73, 0.15);
94
+ color: #f85149;
95
+ }
96
+
97
+ .statusModified {
98
+ composes: statusBadge;
99
+ background: rgba(210, 153, 34, 0.15);
100
+ color: #d29922;
101
+ }
102
+
103
+ .exportName {
104
+ font-weight: 600;
105
+ font-size: 14px;
106
+ font-family: var(--font-mono, monospace);
107
+ }
108
+
109
+ .schemaType {
110
+ color: var(--text-tertiary, #8b949e);
111
+ font-size: 12px;
112
+ }
113
+
114
+ .expandIcon {
115
+ margin-left: auto;
116
+ color: var(--text-tertiary, #8b949e);
117
+ font-size: 12px;
118
+ transition: transform 0.2s;
119
+ }
120
+
121
+ .expandIconOpen {
122
+ composes: expandIcon;
123
+ transform: rotate(90deg);
124
+ }
125
+
126
+ .diffEntryBody {
127
+ padding: 0 16px 16px;
128
+ border-top: 1px solid var(--border-color, #e1e4e8);
129
+ }
130
+
131
+ .detailsList {
132
+ list-style: none;
133
+ padding: 12px 0 0;
134
+ margin: 0;
135
+ display: flex;
136
+ flex-direction: column;
137
+ gap: 8px;
138
+ }
139
+
140
+ .detailItem {
141
+ display: flex;
142
+ align-items: flex-start;
143
+ gap: 8px;
144
+ font-size: 13px;
145
+ line-height: 1.5;
146
+ }
147
+
148
+ .detailBullet {
149
+ color: var(--text-tertiary, #8b949e);
150
+ flex-shrink: 0;
151
+ }
152
+
153
+ .detailDescription {
154
+ color: var(--text-primary);
155
+ }
156
+
157
+ .signatureBlock {
158
+ margin-top: 12px;
159
+ padding: 12px;
160
+ background: var(--bg-dent, #f5f5f5);
161
+ border-radius: 4px;
162
+ font-family: var(--font-mono, monospace);
163
+ font-size: 12px;
164
+ white-space: pre-wrap;
165
+ word-break: break-word;
166
+ line-height: 1.6;
167
+ }
168
+
169
+ .signatureLabel {
170
+ font-weight: 600;
171
+ color: var(--text-secondary, #6e7681);
172
+ margin-bottom: 4px;
173
+ font-family: var(--font-sans, sans-serif);
174
+ font-size: 11px;
175
+ text-transform: uppercase;
176
+ letter-spacing: 0.5px;
177
+ }
178
+
179
+ .signatureRemoved {
180
+ composes: signatureBlock;
181
+ text-decoration: line-through;
182
+ opacity: 0.7;
183
+ }
184
+
185
+ .emptyState {
186
+ display: flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ height: 100%;
190
+ color: var(--text-tertiary, #8b949e);
191
+ font-size: 14px;
192
+ }
193
+
194
+ .toggleSignatures {
195
+ background: none;
196
+ border: none;
197
+ color: var(--accent-color, #0366d6);
198
+ font-size: 12px;
199
+ cursor: pointer;
200
+ padding: 4px 0;
201
+ margin-top: 8px;
202
+
203
+ &:hover {
204
+ text-decoration: underline;
205
+ }
206
+ }
@@ -0,0 +1,20 @@
1
+ import type { Section } from '@teambit/component';
2
+ import type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';
3
+ import type { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';
4
+ export declare class APICompareSection implements TabItem, Section {
5
+ navigationLink: {
6
+ href: string;
7
+ children: string;
8
+ };
9
+ props: {
10
+ href: string;
11
+ children: string;
12
+ };
13
+ route: {
14
+ path: string;
15
+ element: import("react/jsx-runtime").JSX.Element;
16
+ };
17
+ order: number;
18
+ changeType: ChangeType;
19
+ id: string;
20
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.APICompareSection = void 0;
7
+ function _react() {
8
+ const data = _interopRequireDefault(require("react"));
9
+ _react = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _apiCompare() {
15
+ const data = require("./api-compare");
16
+ _apiCompare = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
+ 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; }
23
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
24
+ 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); }
25
+ // Use string cast since the external ChangeType enum doesn't have API yet
26
+ const ChangeTypeAPI = 'API';
27
+ class APICompareSection {
28
+ constructor() {
29
+ _defineProperty(this, "navigationLink", {
30
+ href: 'api',
31
+ children: 'API'
32
+ });
33
+ _defineProperty(this, "props", this.navigationLink);
34
+ _defineProperty(this, "route", {
35
+ path: 'api/*',
36
+ element: /*#__PURE__*/_react().default.createElement(_apiCompare().APICompare, null)
37
+ });
38
+ _defineProperty(this, "order", 15);
39
+ _defineProperty(this, "changeType", ChangeTypeAPI);
40
+ _defineProperty(this, "id", 'api');
41
+ }
42
+ }
43
+ exports.APICompareSection = APICompareSection;
44
+
45
+ //# sourceMappingURL=api-compare.section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","_apiCompare","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ChangeTypeAPI","APICompareSection","constructor","href","children","navigationLink","path","element","createElement","APICompare","exports"],"sources":["api-compare.section.tsx"],"sourcesContent":["import React from 'react';\nimport type { Section } from '@teambit/component';\nimport type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';\nimport type { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';\nimport { APICompare } from './api-compare';\n\n// Use string cast since the external ChangeType enum doesn't have API yet\nconst ChangeTypeAPI = 'API' as unknown as ChangeType;\n\nexport class APICompareSection implements TabItem, Section {\n navigationLink = {\n href: 'api',\n children: 'API',\n };\n\n props = this.navigationLink;\n\n route = {\n path: 'api/*',\n element: <APICompare />,\n };\n\n order = 15;\n changeType = ChangeTypeAPI;\n id = 'api';\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,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,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAE3C;AACA,MAAMgB,aAAa,GAAG,KAA8B;AAE7C,MAAMC,iBAAiB,CAA6B;EAAAC,YAAA;IAAApB,eAAA,yBACxC;MACfqB,IAAI,EAAE,KAAK;MACXC,QAAQ,EAAE;IACZ,CAAC;IAAAtB,eAAA,gBAEO,IAAI,CAACuB,cAAc;IAAAvB,eAAA,gBAEnB;MACNwB,IAAI,EAAE,OAAO;MACbC,OAAO,eAAEjC,MAAA,GAAAO,OAAA,CAAA2B,aAAA,CAAC9B,WAAA,GAAA+B,UAAU,MAAE;IACxB,CAAC;IAAA3B,eAAA,gBAEO,EAAE;IAAAA,eAAA,qBACGkB,aAAa;IAAAlB,eAAA,aACrB,KAAK;EAAA;AACZ;AAAC4B,OAAA,CAAAT,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ export type APIDiffDetail = {
2
+ aspect: string;
3
+ description: string;
4
+ impact: string;
5
+ from?: string;
6
+ to?: string;
7
+ };
8
+ export type APIDiffChange = {
9
+ status: string;
10
+ visibility: string;
11
+ exportName: string;
12
+ schemaType: string;
13
+ schemaTypeRaw: string;
14
+ impact: string;
15
+ baseSignature?: string;
16
+ compareSignature?: string;
17
+ baseNode?: Record<string, any>;
18
+ compareNode?: Record<string, any>;
19
+ changes?: APIDiffDetail[];
20
+ };
21
+ export type APIDiffResult = {
22
+ hasChanges: boolean;
23
+ impact: string;
24
+ publicChanges: APIDiffChange[];
25
+ internalChanges: APIDiffChange[];
26
+ changes: APIDiffChange[];
27
+ added: number;
28
+ removed: number;
29
+ modified: number;
30
+ breaking: number;
31
+ nonBreaking: number;
32
+ patch: number;
33
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=api-compare.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["api-compare.types.ts"],"sourcesContent":["export type APIDiffDetail = {\n aspect: string;\n description: string;\n impact: string;\n from?: string;\n to?: string;\n};\n\nexport type APIDiffChange = {\n status: string;\n visibility: string;\n exportName: string;\n schemaType: string;\n schemaTypeRaw: string;\n impact: string;\n baseSignature?: string;\n compareSignature?: string;\n baseNode?: Record<string, any>;\n compareNode?: Record<string, any>;\n changes?: APIDiffDetail[];\n};\n\nexport type APIDiffResult = {\n hasChanges: boolean;\n impact: string;\n publicChanges: APIDiffChange[];\n internalChanges: APIDiffChange[];\n changes: APIDiffChange[];\n added: number;\n removed: number;\n modified: number;\n breaking: number;\n nonBreaking: number;\n patch: number;\n};\n"],"mappings":"","ignoreList":[]}
@@ -4,6 +4,7 @@ import type { APINodeRenderer } from '@teambit/api-reference.models.api-node-ren
4
4
  import type { SchemaNodeConstructor } from '@teambit/semantics.entities.semantic-schema';
5
5
  import type { CodeUI } from '@teambit/code';
6
6
  import type { WorkspaceUI } from '@teambit/workspace';
7
+ import type { ComponentCompareUI } from '@teambit/component-compare';
7
8
  export type APINodeRendererSlot = SlotRegistry<APINodeRenderer[]>;
8
9
  export declare class APIReferenceUI {
9
10
  private host;
@@ -26,6 +27,6 @@ export declare class APIReferenceUI {
26
27
  registerSchemaClasses(getSchemas: () => SchemaNodeConstructor[]): void;
27
28
  registerAPINodeRenderer(apiNodeRenderers: APINodeRenderer[]): void;
28
29
  apiNodeRenderers: APINodeRenderer[];
29
- static provider([componentUI, codeUI, workspaceUI]: [ComponentUI, CodeUI, WorkspaceUI], _: any, [apiNodeRendererSlot]: [APINodeRendererSlot], harmony: Harmony): Promise<APIReferenceUI>;
30
+ static provider([componentUI, codeUI, workspaceUI, componentCompareUI]: [ComponentUI, CodeUI, WorkspaceUI, ComponentCompareUI], _: any, [apiNodeRendererSlot]: [APINodeRendererSlot], harmony: Harmony): Promise<APIReferenceUI>;
30
31
  }
31
32
  export default APIReferenceUI;
@@ -95,6 +95,13 @@ function _workspace() {
95
95
  };
96
96
  return data;
97
97
  }
98
+ function _componentCompare() {
99
+ const data = require("@teambit/component-compare");
100
+ _componentCompare = function () {
101
+ return data;
102
+ };
103
+ return data;
104
+ }
98
105
  function _apiReference() {
99
106
  const data = require("./api-reference.aspect");
100
107
  _apiReference = function () {
@@ -102,6 +109,13 @@ function _apiReference() {
102
109
  };
103
110
  return data;
104
111
  }
112
+ function _apiCompare() {
113
+ const data = require("./api-compare.section");
114
+ _apiCompare = function () {
115
+ return data;
116
+ };
117
+ return data;
118
+ }
105
119
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
106
120
  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; }
107
121
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
@@ -144,7 +158,7 @@ class APIReferenceUI {
144
158
  registerAPINodeRenderer(apiNodeRenderers) {
145
159
  this.apiNodeRendererSlot.register(apiNodeRenderers);
146
160
  }
147
- static async provider([componentUI, codeUI, workspaceUI], _, [apiNodeRendererSlot], harmony) {
161
+ static async provider([componentUI, codeUI, workspaceUI, componentCompareUI], _, [apiNodeRendererSlot], harmony) {
148
162
  const {
149
163
  config
150
164
  } = harmony;
@@ -156,11 +170,16 @@ class APIReferenceUI {
156
170
  componentUI.registerRoute(apiReferenceSection.route);
157
171
  // register all default schema classes
158
172
  apiReferenceUI.registerSchemaClasses(() => Object.values(_semanticsEntities().Schemas));
173
+
174
+ // register API compare tab in component compare
175
+ const apiCompareSection = new (_apiCompare().APICompareSection)();
176
+ componentCompareUI.registerNavigation(apiCompareSection);
177
+ componentCompareUI.registerRoutes([apiCompareSection.route]);
159
178
  return apiReferenceUI;
160
179
  }
161
180
  }
162
181
  exports.APIReferenceUI = APIReferenceUI;
163
- _defineProperty(APIReferenceUI, "dependencies", [_component().ComponentAspect, _code().CodeAspect, _workspace().WorkspaceAspect]);
182
+ _defineProperty(APIReferenceUI, "dependencies", [_component().ComponentAspect, _code().CodeAspect, _workspace().WorkspaceAspect, _componentCompare().ComponentCompareAspect]);
164
183
  _defineProperty(APIReferenceUI, "runtime", _ui().UIRuntime);
165
184
  _defineProperty(APIReferenceUI, "slots", [_harmony().Slot.withType()]);
166
185
  var _default = exports.default = APIReferenceUI;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireDefault","require","_lodash","_component","_ui","_apiReferenceSections","_apiReferenceSections2","_harmony","_apiReferenceRenderers","_apiReferenceHooks","_semanticsEntities","_code","_taggedExports","_workspace","_apiReference","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","APIReferenceUI","constructor","host","apiNodeRendererSlot","code","workspace","componentId","createElement","APIRefRenderersProvider","nodeRenderers","flatten","values","TaggedExports","showBanner","Boolean","defaultNodeRenderers","getAPIPage","EditorProvider","getCodeEditorProvider","APIRefPage","rendererSlot","registerSchemaClass","schema","SchemaRegistry","register","registerSchemaClasses","getSchemas","registerGetSchemas","registerAPINodeRenderer","apiNodeRenderers","provider","componentUI","codeUI","workspaceUI","_","harmony","config","get","apiReferenceUI","apiReferenceSection","APIRefSection","registerNavigation","navigationLink","order","registerRoute","route","Schemas","exports","ComponentAspect","CodeAspect","WorkspaceAspect","UIRuntime","Slot","withType","_default","APIReferenceAspect","addRuntime"],"sources":["api-reference.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport { flatten } from 'lodash';\nimport type { ComponentUI } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { UIRuntime } from '@teambit/ui';\nimport { APIRefPage } from '@teambit/api-reference.sections.api-reference-page';\nimport { APIRefSection } from '@teambit/api-reference.sections.api-reference-section';\nimport type { Harmony, SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { APINodeRenderer } from '@teambit/api-reference.models.api-node-renderer';\nimport { defaultNodeRenderers } from '@teambit/api-reference.renderers.default-node-renderers';\nimport { APIRefRenderersProvider } from '@teambit/api-reference.hooks.use-api-renderers';\nimport type { SchemaNodeConstructor } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaRegistry, Schemas } from '@teambit/semantics.entities.semantic-schema';\nimport type { CodeUI } from '@teambit/code';\nimport { CodeAspect } from '@teambit/code';\nimport { TaggedExports } from '@teambit/tagged-exports';\nimport type { WorkspaceUI } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\n\nimport { APIReferenceAspect } from './api-reference.aspect';\n\nexport type APINodeRendererSlot = SlotRegistry<APINodeRenderer[]>;\nexport class APIReferenceUI {\n constructor(\n private host: string,\n private apiNodeRendererSlot: APINodeRendererSlot,\n private code: CodeUI,\n private workspace: WorkspaceUI\n ) {}\n\n static dependencies = [ComponentAspect, CodeAspect, WorkspaceAspect];\n static runtime = UIRuntime;\n static slots = [Slot.withType<APINodeRenderer[]>()];\n\n getAPIPage() {\n const EditorProvider = this.code.getCodeEditorProvider();\n return (\n <EditorProvider>\n <APIRefPage host={this.host} rendererSlot={this.apiNodeRendererSlot} />\n </EditorProvider>\n );\n }\n\n TaggedAPIPage = ({ componentId }: { componentId: string }) => {\n return (\n <APIRefRenderersProvider nodeRenderers={flatten(this.apiNodeRendererSlot.values())}>\n <TaggedExports componentId={componentId} showBanner={Boolean(this.workspace)} />\n </APIRefRenderersProvider>\n );\n };\n\n /**\n * @deprecated use registerSchemaClasses instead\n * registerSchemaClasses is better for performance as it lazy-loads the schemas.\n */\n registerSchemaClass(schema: SchemaNodeConstructor) {\n SchemaRegistry.register(schema);\n }\n\n registerSchemaClasses(getSchemas: () => SchemaNodeConstructor[]) {\n SchemaRegistry.registerGetSchemas(getSchemas);\n }\n\n registerAPINodeRenderer(apiNodeRenderers: APINodeRenderer[]) {\n this.apiNodeRendererSlot.register(apiNodeRenderers);\n }\n\n apiNodeRenderers: APINodeRenderer[] = defaultNodeRenderers;\n\n static async provider(\n [componentUI, codeUI, workspaceUI]: [ComponentUI, CodeUI, WorkspaceUI],\n _,\n [apiNodeRendererSlot]: [APINodeRendererSlot],\n harmony: Harmony\n ) {\n const { config } = harmony;\n const host = String(config.get('teambit.harmony/bit'));\n const apiReferenceUI = new APIReferenceUI(host, apiNodeRendererSlot, codeUI, workspaceUI);\n apiReferenceUI.registerAPINodeRenderer(apiReferenceUI.apiNodeRenderers);\n const apiReferenceSection = new APIRefSection(apiReferenceUI);\n componentUI.registerNavigation(apiReferenceSection.navigationLink, apiReferenceSection.order);\n componentUI.registerRoute(apiReferenceSection.route);\n // register all default schema classes\n apiReferenceUI.registerSchemaClasses(() => Object.values(Schemas));\n\n return apiReferenceUI;\n }\n}\n\nexport default APIReferenceUI;\n\nAPIReferenceAspect.addRuntime(APIReferenceUI);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","_lodash","_component","_ui","_apiReferenceSections","_apiReferenceSections2","_harmony","_apiReferenceRenderers","_apiReferenceHooks","_semanticsEntities","_code","_taggedExports","_workspace","_componentCompare","_apiReference","_apiCompare","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","APIReferenceUI","constructor","host","apiNodeRendererSlot","code","workspace","componentId","createElement","APIRefRenderersProvider","nodeRenderers","flatten","values","TaggedExports","showBanner","Boolean","defaultNodeRenderers","getAPIPage","EditorProvider","getCodeEditorProvider","APIRefPage","rendererSlot","registerSchemaClass","schema","SchemaRegistry","register","registerSchemaClasses","getSchemas","registerGetSchemas","registerAPINodeRenderer","apiNodeRenderers","provider","componentUI","codeUI","workspaceUI","componentCompareUI","_","harmony","config","get","apiReferenceUI","apiReferenceSection","APIRefSection","registerNavigation","navigationLink","order","registerRoute","route","Schemas","apiCompareSection","APICompareSection","registerRoutes","exports","ComponentAspect","CodeAspect","WorkspaceAspect","ComponentCompareAspect","UIRuntime","Slot","withType","_default","APIReferenceAspect","addRuntime"],"sources":["api-reference.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport { flatten } from 'lodash';\nimport type { ComponentUI } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { UIRuntime } from '@teambit/ui';\nimport { APIRefPage } from '@teambit/api-reference.sections.api-reference-page';\nimport { APIRefSection } from '@teambit/api-reference.sections.api-reference-section';\nimport type { Harmony, SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { APINodeRenderer } from '@teambit/api-reference.models.api-node-renderer';\nimport { defaultNodeRenderers } from '@teambit/api-reference.renderers.default-node-renderers';\nimport { APIRefRenderersProvider } from '@teambit/api-reference.hooks.use-api-renderers';\nimport type { SchemaNodeConstructor } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaRegistry, Schemas } from '@teambit/semantics.entities.semantic-schema';\nimport type { CodeUI } from '@teambit/code';\nimport { CodeAspect } from '@teambit/code';\nimport { TaggedExports } from '@teambit/tagged-exports';\nimport type { WorkspaceUI } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { ComponentCompareUI } from '@teambit/component-compare';\nimport { ComponentCompareAspect } from '@teambit/component-compare';\n\nimport { APIReferenceAspect } from './api-reference.aspect';\nimport { APICompareSection } from './api-compare.section';\n\nexport type APINodeRendererSlot = SlotRegistry<APINodeRenderer[]>;\nexport class APIReferenceUI {\n constructor(\n private host: string,\n private apiNodeRendererSlot: APINodeRendererSlot,\n private code: CodeUI,\n private workspace: WorkspaceUI\n ) {}\n\n static dependencies = [ComponentAspect, CodeAspect, WorkspaceAspect, ComponentCompareAspect];\n static runtime = UIRuntime;\n static slots = [Slot.withType<APINodeRenderer[]>()];\n\n getAPIPage() {\n const EditorProvider = this.code.getCodeEditorProvider();\n return (\n <EditorProvider>\n <APIRefPage host={this.host} rendererSlot={this.apiNodeRendererSlot} />\n </EditorProvider>\n );\n }\n\n TaggedAPIPage = ({ componentId }: { componentId: string }) => {\n return (\n <APIRefRenderersProvider nodeRenderers={flatten(this.apiNodeRendererSlot.values())}>\n <TaggedExports componentId={componentId} showBanner={Boolean(this.workspace)} />\n </APIRefRenderersProvider>\n );\n };\n\n /**\n * @deprecated use registerSchemaClasses instead\n * registerSchemaClasses is better for performance as it lazy-loads the schemas.\n */\n registerSchemaClass(schema: SchemaNodeConstructor) {\n SchemaRegistry.register(schema);\n }\n\n registerSchemaClasses(getSchemas: () => SchemaNodeConstructor[]) {\n SchemaRegistry.registerGetSchemas(getSchemas);\n }\n\n registerAPINodeRenderer(apiNodeRenderers: APINodeRenderer[]) {\n this.apiNodeRendererSlot.register(apiNodeRenderers);\n }\n\n apiNodeRenderers: APINodeRenderer[] = defaultNodeRenderers;\n\n static async provider(\n [componentUI, codeUI, workspaceUI, componentCompareUI]: [ComponentUI, CodeUI, WorkspaceUI, ComponentCompareUI],\n _,\n [apiNodeRendererSlot]: [APINodeRendererSlot],\n harmony: Harmony\n ) {\n const { config } = harmony;\n const host = String(config.get('teambit.harmony/bit'));\n const apiReferenceUI = new APIReferenceUI(host, apiNodeRendererSlot, codeUI, workspaceUI);\n apiReferenceUI.registerAPINodeRenderer(apiReferenceUI.apiNodeRenderers);\n const apiReferenceSection = new APIRefSection(apiReferenceUI);\n componentUI.registerNavigation(apiReferenceSection.navigationLink, apiReferenceSection.order);\n componentUI.registerRoute(apiReferenceSection.route);\n // register all default schema classes\n apiReferenceUI.registerSchemaClasses(() => Object.values(Schemas));\n\n // register API compare tab in component compare\n const apiCompareSection = new APICompareSection();\n componentCompareUI.registerNavigation(apiCompareSection);\n componentCompareUI.registerRoutes([apiCompareSection.route]);\n\n return apiReferenceUI;\n }\n}\n\nexport default APIReferenceUI;\n\nAPIReferenceAspect.addRuntime(APIReferenceUI);\n"],"mappings":"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","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import { APIReferenceAspect } from './api-reference.aspect';
2
2
  export type { APIReferenceUI, APINodeRendererSlot } from './api-reference.ui.runtime';
3
+ export { APICompare } from './api-compare';
4
+ export type { APIDiffResult, APIDiffChange, APIDiffDetail } from './api-compare.types';
3
5
  export default APIReferenceAspect;
4
6
  export { APIReferenceAspect };
package/dist/index.js CHANGED
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "APICompare", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _apiCompare().APICompare;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "APIReferenceAspect", {
7
13
  enumerable: true,
8
14
  get: function () {
@@ -17,6 +23,13 @@ function _apiReference() {
17
23
  };
18
24
  return data;
19
25
  }
26
+ function _apiCompare() {
27
+ const data = require("./api-compare");
28
+ _apiCompare = function () {
29
+ return data;
30
+ };
31
+ return data;
32
+ }
20
33
  var _default = exports.default = _apiReference().APIReferenceAspect;
21
34
 
22
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_apiReference","data","require","_default","exports","default","APIReferenceAspect"],"sources":["index.ts"],"sourcesContent":["import { APIReferenceAspect } from './api-reference.aspect';\n\nexport type { APIReferenceUI, APINodeRendererSlot } from './api-reference.ui.runtime';\nexport default APIReferenceAspect;\nexport { APIReferenceAspect };\n"],"mappings":";;;;;;;;;;;;AAAA,SAAAA,cAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,aAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA4D,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAG7CC,kCAAkB","ignoreList":[]}
1
+ {"version":3,"names":["_apiReference","data","require","_apiCompare","_default","exports","default","APIReferenceAspect"],"sources":["index.ts"],"sourcesContent":["import { APIReferenceAspect } from './api-reference.aspect';\n\nexport type { APIReferenceUI, APINodeRendererSlot } from './api-reference.ui.runtime';\nexport { APICompare } from './api-compare';\nexport type { APIDiffResult, APIDiffChange, APIDiffDetail } from './api-compare.types';\nexport default APIReferenceAspect;\nexport { APIReferenceAspect };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAAA,cAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,aAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAE,YAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE5BC,kCAAkB","ignoreList":[]}
package/package.json CHANGED
@@ -1,27 +1,31 @@
1
1
  {
2
2
  "name": "@teambit/api-reference",
3
- "version": "0.0.0-e375180bb3bf500a71cf2be9a71ea066030d5446",
3
+ "version": "0.0.0-e429ff17a2889d7012d3e76813e6c956a0cc79cf",
4
4
  "homepage": "https://bit.cloud/teambit/api-reference/api-reference",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.api-reference",
8
8
  "name": "api-reference",
9
- "version": "e375180bb3bf500a71cf2be9a71ea066030d5446"
9
+ "version": "e429ff17a2889d7012d3e76813e6c956a0cc79cf"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
13
+ "@teambit/component.ui.component-compare.models.component-compare-change-type": "0.0.7",
14
+ "@teambit/component.ui.component-compare.models.component-compare-props": "0.0.126",
15
+ "@teambit/component.ui.component-compare.context": "0.0.124",
13
16
  "@teambit/harmony": "0.4.7",
14
17
  "@teambit/api-reference.hooks.use-api-renderers": "0.0.37",
15
18
  "@teambit/api-reference.models.api-node-renderer": "0.0.53",
16
- "@teambit/api-reference.renderers.default-node-renderers": "0.0.7",
17
- "@teambit/api-reference.sections.api-reference-page": "0.0.120",
18
19
  "@teambit/api-reference.sections.api-reference-section": "0.0.16",
19
- "@teambit/semantics.entities.semantic-schema": "0.0.100",
20
- "@teambit/tagged-exports": "0.0.48",
21
- "@teambit/code": "0.0.0-4852290b99fd5dba1acfe3ee335abec78b3301d4",
22
- "@teambit/component": "0.0.0-9f84b57cc6e0cc4f48f0ab000c2d7e69843ba355",
23
- "@teambit/ui": "0.0.0-1a2f24fec73ff7f015d5b3613091828928251edf",
24
- "@teambit/workspace": "0.0.0-715fb09169120c93947cdbcba95bafb70d31f639"
20
+ "@teambit/tagged-exports": "0.0.49",
21
+ "@teambit/api-reference.sections.api-reference-page": "0.0.120",
22
+ "@teambit/component": "0.0.0-44b445c7605598e888b5471b94bea75e2fb3d370",
23
+ "@teambit/api-reference.renderers.default-node-renderers": "0.0.0-4bff2362a4373346d23f3dd4b4c084f9c088e54d",
24
+ "@teambit/code": "0.0.0-23e36a86cb1e47550e299c5172084da70b59f8a7",
25
+ "@teambit/component-compare": "0.0.0-6afaa6599f9504ceffbc9e9fc5e96a629fca3921",
26
+ "@teambit/semantics.entities.semantic-schema": "0.0.0-be340a42c14aec5c828cdc5cf57dcae411e9d971",
27
+ "@teambit/ui": "0.0.0-9dc54ccb8557d1f762c09e9941efad28c2f50335",
28
+ "@teambit/workspace": "0.0.0-194ee364c8c92ed11fe3cf6a8e7f54f36d96e321"
25
29
  },
26
30
  "devDependencies": {
27
31
  "@types/lodash": "4.14.165",