@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.
- package/api-compare.module.scss +206 -0
- package/api-compare.section.tsx +26 -0
- package/api-compare.tsx +213 -0
- package/api-reference.ui.runtime.tsx +10 -2
- package/dist/api-compare.d.ts +3 -0
- package/dist/api-compare.js +234 -0
- package/dist/api-compare.js.map +1 -0
- package/dist/api-compare.module.scss +206 -0
- package/dist/api-compare.section.d.ts +20 -0
- package/dist/api-compare.section.js +45 -0
- package/dist/api-compare.section.js.map +1 -0
- package/dist/api-compare.types.d.ts +33 -0
- package/dist/api-compare.types.js +3 -0
- package/dist/api-compare.types.js.map +1 -0
- package/dist/api-reference.ui.runtime.d.ts +2 -1
- package/dist/api-reference.ui.runtime.js +21 -2
- package/dist/api-reference.ui.runtime.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/package.json +14 -10
- /package/dist/{preview-1773164604941.js → preview-1774986834561.js} +0 -0
|
@@ -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
|
+
}
|
package/api-compare.tsx
ADDED
|
@@ -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,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 @@
|
|
|
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":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,WAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,IAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,GAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,sBAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,qBAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,uBAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,sBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAQ,SAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,QAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAS,uBAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,sBAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,mBAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,kBAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAW,mBAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,kBAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAY,MAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,KAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,eAAA;EAAA,MAAAb,IAAA,GAAAE,OAAA;EAAAW,cAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAc,WAAA;EAAA,MAAAd,IAAA,GAAAE,OAAA;EAAAY,UAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAe,kBAAA;EAAA,MAAAf,IAAA,GAAAE,OAAA;EAAAa,iBAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAgB,cAAA;EAAA,MAAAhB,IAAA,GAAAE,OAAA;EAAAc,aAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,YAAA;EAAA,MAAAjB,IAAA,GAAAE,OAAA;EAAAe,WAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0D,SAAAC,uBAAAiB,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;AAGnD,MAAMgB,cAAc,CAAC;EAC1BC,WAAWA,CACDC,IAAY,EACZC,mBAAwC,EACxCC,IAAY,EACZC,SAAsB,EAC9B;IAAA,KAJQH,IAAY,GAAZA,IAAY;IAAA,KACZC,mBAAwC,GAAxCA,mBAAwC;IAAA,KACxCC,IAAY,GAAZA,IAAY;IAAA,KACZC,SAAsB,GAAtBA,SAAsB;IAAAvB,eAAA,wBAgBhB,CAAC;MAAEwB;IAAqC,CAAC,KAAK;MAC5D,oBACE9C,MAAA,GAAAqB,OAAA,CAAA0B,aAAA,CAACpC,kBAAA,GAAAqC,uBAAuB;QAACC,aAAa,EAAE,IAAAC,iBAAO,EAAC,IAAI,CAACP,mBAAmB,CAACQ,MAAM,CAAC,CAAC;MAAE,gBACjFnD,MAAA,GAAAqB,OAAA,CAAA0B,aAAA,CAACjC,cAAA,GAAAsC,aAAa;QAACN,WAAW,EAAEA,WAAY;QAACO,UAAU,EAAEC,OAAO,CAAC,IAAI,CAACT,SAAS;MAAE,CAAE,CACxD,CAAC;IAE9B,CAAC;IAAAvB,eAAA,2BAkBqCiC,6CAAoB;EAvCvD;EAMHC,UAAUA,CAAA,EAAG;IACX,MAAMC,cAAc,GAAG,IAAI,CAACb,IAAI,CAACc,qBAAqB,CAAC,CAAC;IACxD,oBACE1D,MAAA,GAAAqB,OAAA,CAAA0B,aAAA,CAACU,cAAc,qBACbzD,MAAA,GAAAqB,OAAA,CAAA0B,aAAA,CAACxC,qBAAA,GAAAoD,UAAU;MAACjB,IAAI,EAAE,IAAI,CAACA,IAAK;MAACkB,YAAY,EAAE,IAAI,CAACjB;IAAoB,CAAE,CACxD,CAAC;EAErB;EAUA;AACF;AACA;AACA;EACEkB,mBAAmBA,CAACC,MAA6B,EAAE;IACjDC,mCAAc,CAACC,QAAQ,CAACF,MAAM,CAAC;EACjC;EAEAG,qBAAqBA,CAACC,UAAyC,EAAE;IAC/DH,mCAAc,CAACI,kBAAkB,CAACD,UAAU,CAAC;EAC/C;EAEAE,uBAAuBA,CAACC,gBAAmC,EAAE;IAC3D,IAAI,CAAC1B,mBAAmB,CAACqB,QAAQ,CAACK,gBAAgB,CAAC;EACrD;EAIA,aAAaC,QAAQA,CACnB,CAACC,WAAW,EAAEC,MAAM,EAAEC,WAAW,EAAEC,kBAAkB,CAAyD,EAC9GC,CAAC,EACD,CAAChC,mBAAmB,CAAwB,EAC5CiC,OAAgB,EAChB;IACA,MAAM;MAAEC;IAAO,CAAC,GAAGD,OAAO;IAC1B,MAAMlC,IAAI,GAAGJ,MAAM,CAACuC,MAAM,CAACC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACtD,MAAMC,cAAc,GAAG,IAAIvC,cAAc,CAACE,IAAI,EAAEC,mBAAmB,EAAE6B,MAAM,EAAEC,WAAW,CAAC;IACzFM,cAAc,CAACX,uBAAuB,CAACW,cAAc,CAACV,gBAAgB,CAAC;IACvE,MAAMW,mBAAmB,GAAG,KAAIC,sCAAa,EAACF,cAAc,CAAC;IAC7DR,WAAW,CAACW,kBAAkB,CAACF,mBAAmB,CAACG,cAAc,EAAEH,mBAAmB,CAACI,KAAK,CAAC;IAC7Fb,WAAW,CAACc,aAAa,CAACL,mBAAmB,CAACM,KAAK,CAAC;IACpD;IACAP,cAAc,CAACd,qBAAqB,CAAC,MAAMvC,MAAM,CAACyB,MAAM,CAACoC,4BAAO,CAAC,CAAC;;IAElE;IACA,MAAMC,iBAAiB,GAAG,KAAIC,+BAAiB,EAAC,CAAC;IACjDf,kBAAkB,CAACQ,kBAAkB,CAACM,iBAAiB,CAAC;IACxDd,kBAAkB,CAACgB,cAAc,CAAC,CAACF,iBAAiB,CAACF,KAAK,CAAC,CAAC;IAE5D,OAAOP,cAAc;EACvB;AACF;AAACY,OAAA,CAAAnD,cAAA,GAAAA,cAAA;AAAAlB,eAAA,CAtEYkB,cAAc,kBAQH,CAACoD,4BAAe,EAAEC,kBAAU,EAAEC,4BAAe,EAAEC,0CAAsB,CAAC;AAAAzE,eAAA,CARjFkB,cAAc,aASRwD,eAAS;AAAA1E,eAAA,CATfkB,cAAc,WAUV,CAACyD,eAAI,CAACC,QAAQ,CAAoB,CAAC,CAAC;AAAA,IAAAC,QAAA,GAAAR,OAAA,CAAAtE,OAAA,GA8DtCmB,cAAc;AAE7B4D,kCAAkB,CAACC,UAAU,CAAC7D,cAAc,CAAC","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":"
|
|
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-
|
|
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": "
|
|
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/
|
|
20
|
-
"@teambit/
|
|
21
|
-
"@teambit/
|
|
22
|
-
"@teambit/
|
|
23
|
-
"@teambit/
|
|
24
|
-
"@teambit/
|
|
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",
|
|
File without changes
|