@package-broker/ui 2.0.0-rc.2 → 2.0.0-rc.4
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/dist/.tsbuildinfo +1 -1
- package/dist/api-types.d.ts +8148 -2725
- package/dist/api-types.d.ts.map +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +10 -0
- package/dist/api.js.map +1 -1
- package/dist/app-path.d.ts +2 -0
- package/dist/app-path.d.ts.map +1 -0
- package/dist/app-path.js +2 -0
- package/dist/app-path.js.map +1 -0
- package/dist/app.d.ts +10 -14
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +37 -22
- package/dist/app.js.map +1 -1
- package/dist/assets/access.62e9484517a0.js +1 -0
- package/dist/assets/app.45b156168495.css +2 -0
- package/dist/assets/app.c064670cdc0d.js +9 -0
- package/dist/assets/audit.b7c40b9dc998.js +1 -0
- package/dist/assets/chunk.28a4d8aab337.js +1 -0
- package/dist/assets/chunk.3fcd6998795a.js +1 -0
- package/dist/assets/chunk.51497edc7697.js +4 -0
- package/dist/assets/chunk.56d473a1587d.js +1 -0
- package/dist/assets/chunk.675b635d9462.js +1 -0
- package/dist/assets/chunk.6ea6bdcaa465.js +1 -0
- package/dist/assets/chunk.741aec8d1ff9.js +1 -0
- package/dist/assets/chunk.815f9a91c741.js +1 -0
- package/dist/assets/chunk.8442124f6802.js +1 -0
- package/dist/assets/chunk.965b76812604.js +2 -0
- package/dist/assets/chunk.a6d755a9789f.js +1 -0
- package/dist/assets/chunk.d18497920e4d.js +1 -0
- package/dist/assets/chunk.d813fefb410d.js +1 -0
- package/dist/assets/chunk.e3b0c44298fc.js +0 -0
- package/dist/assets/chunk.f54ea1378c8c.js +1 -0
- package/dist/assets/chunk.fd375c54b526.js +1 -0
- package/dist/assets/import.e7a1e5834631.js +1 -0
- package/dist/assets/index.html +9 -2
- package/dist/assets/manifest.json +108 -8
- package/dist/assets/notifications.19225fe12044.js +1 -0
- package/dist/assets/npm-login.e059678af13d.js +1 -0
- package/dist/assets/packages.ab5ab25b1c75.js +2 -0
- package/dist/assets/projects.927fe18c785c.js +1 -0
- package/dist/assets/setup.8e977608d413.js +1 -0
- package/dist/assets/setup.html +3 -3
- package/dist/assets/sources.ae50f239f80f.js +1 -0
- package/dist/assets/tokens.6b86d8d97e07.js +4 -0
- package/dist/auth.d.ts +26 -3
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +133 -19
- package/dist/auth.js.map +1 -1
- package/dist/components/product-footer-content.d.ts +21 -0
- package/dist/components/product-footer-content.d.ts.map +1 -0
- package/dist/components/product-footer-content.js +30 -0
- package/dist/components/product-footer-content.js.map +1 -0
- package/dist/components/product-footer.d.ts +3 -0
- package/dist/components/product-footer.d.ts.map +1 -0
- package/dist/components/product-footer.js +6 -0
- package/dist/components/product-footer.js.map +1 -0
- package/dist/components/ui/status-badge.d.ts +5 -0
- package/dist/components/ui/status-badge.d.ts.map +1 -1
- package/dist/components/ui/status-badge.js +10 -0
- package/dist/components/ui/status-badge.js.map +1 -1
- package/dist/manifest.d.ts +32 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +41 -0
- package/dist/manifest.js.map +1 -1
- package/dist/package-limits.d.ts +3 -0
- package/dist/package-limits.d.ts.map +1 -0
- package/dist/package-limits.js +3 -0
- package/dist/package-limits.js.map +1 -0
- package/dist/page-hash.d.ts +1 -1
- package/dist/page-hash.d.ts.map +1 -1
- package/dist/page-hash.js.map +1 -1
- package/dist/page-loader.d.ts +5 -0
- package/dist/page-loader.d.ts.map +1 -0
- package/dist/page-loader.js +39 -0
- package/dist/page-loader.js.map +1 -0
- package/dist/pages/access/grant-form.d.ts +48 -0
- package/dist/pages/access/grant-form.d.ts.map +1 -0
- package/dist/pages/access/grant-form.js +153 -0
- package/dist/pages/access/grant-form.js.map +1 -0
- package/dist/pages/access/permission-descriptions.d.ts +2 -0
- package/dist/pages/access/permission-descriptions.d.ts.map +1 -0
- package/dist/pages/access/permission-descriptions.js +36 -0
- package/dist/pages/access/permission-descriptions.js.map +1 -0
- package/dist/pages/access/role-catalogue.d.ts +22 -0
- package/dist/pages/access/role-catalogue.d.ts.map +1 -0
- package/dist/pages/access/role-catalogue.js +40 -0
- package/dist/pages/access/role-catalogue.js.map +1 -0
- package/dist/pages/access.d.ts +6 -0
- package/dist/pages/access.d.ts.map +1 -1
- package/dist/pages/access.js +66 -31
- package/dist/pages/access.js.map +1 -1
- package/dist/pages/audit.d.ts.map +1 -1
- package/dist/pages/notification-actions.d.ts +41 -0
- package/dist/pages/notification-actions.d.ts.map +1 -0
- package/dist/pages/notification-actions.js +187 -0
- package/dist/pages/notification-actions.js.map +1 -0
- package/dist/pages/notification-draft.d.ts +13 -0
- package/dist/pages/notification-draft.d.ts.map +1 -0
- package/dist/pages/notification-draft.js +75 -0
- package/dist/pages/notification-draft.js.map +1 -0
- package/dist/pages/notification-form.d.ts +35 -0
- package/dist/pages/notification-form.d.ts.map +1 -0
- package/dist/pages/notification-form.js +167 -0
- package/dist/pages/notification-form.js.map +1 -0
- package/dist/pages/notifications-controller.d.ts +41 -0
- package/dist/pages/notifications-controller.d.ts.map +1 -0
- package/dist/pages/notifications-controller.js +184 -0
- package/dist/pages/notifications-controller.js.map +1 -0
- package/dist/pages/notifications.d.ts +10 -0
- package/dist/pages/notifications.d.ts.map +1 -0
- package/dist/pages/notifications.js +301 -0
- package/dist/pages/notifications.js.map +1 -0
- package/dist/pages/npm-login.d.ts +2 -0
- package/dist/pages/npm-login.d.ts.map +1 -0
- package/dist/pages/npm-login.js +62 -0
- package/dist/pages/npm-login.js.map +1 -0
- package/dist/pages/packages/npm-workflow.d.ts +31 -0
- package/dist/pages/packages/npm-workflow.d.ts.map +1 -0
- package/dist/pages/packages/npm-workflow.js +381 -0
- package/dist/pages/packages/npm-workflow.js.map +1 -0
- package/dist/pages/packages/package-detail.d.ts +9 -0
- package/dist/pages/packages/package-detail.d.ts.map +1 -0
- package/dist/pages/packages/package-detail.js +242 -0
- package/dist/pages/packages/package-detail.js.map +1 -0
- package/dist/pages/packages/source-actions.d.ts +49 -0
- package/dist/pages/packages/source-actions.d.ts.map +1 -0
- package/dist/pages/packages/source-actions.js +319 -0
- package/dist/pages/packages/source-actions.js.map +1 -0
- package/dist/pages/packages.d.ts +15 -4
- package/dist/pages/packages.d.ts.map +1 -1
- package/dist/pages/packages.js +138 -20
- package/dist/pages/packages.js.map +1 -1
- package/dist/pages/projects/project-form-model.d.ts +25 -0
- package/dist/pages/projects/project-form-model.d.ts.map +1 -0
- package/dist/pages/projects/project-form-model.js +69 -0
- package/dist/pages/projects/project-form-model.js.map +1 -0
- package/dist/pages/projects/project-form.d.ts +14 -0
- package/dist/pages/projects/project-form.d.ts.map +1 -0
- package/dist/pages/projects/project-form.js +91 -0
- package/dist/pages/projects/project-form.js.map +1 -0
- package/dist/pages/projects.d.ts +3 -2
- package/dist/pages/projects.d.ts.map +1 -1
- package/dist/pages/projects.js +29 -38
- package/dist/pages/projects.js.map +1 -1
- package/dist/pages/sources/source-form.d.ts +5 -2
- package/dist/pages/sources/source-form.d.ts.map +1 -1
- package/dist/pages/sources/source-form.js +39 -27
- package/dist/pages/sources/source-form.js.map +1 -1
- package/dist/pages/sources/sync-copy.d.ts +5 -0
- package/dist/pages/sources/sync-copy.d.ts.map +1 -0
- package/dist/pages/sources/sync-copy.js +11 -0
- package/dist/pages/sources/sync-copy.js.map +1 -0
- package/dist/pages/sources.d.ts +11 -3
- package/dist/pages/sources.d.ts.map +1 -1
- package/dist/pages/sources.js +103 -25
- package/dist/pages/sources.js.map +1 -1
- package/dist/pages/tokens/client-config.d.ts +3 -0
- package/dist/pages/tokens/client-config.d.ts.map +1 -1
- package/dist/pages/tokens/client-config.js +12 -2
- package/dist/pages/tokens/client-config.js.map +1 -1
- package/dist/pages/tokens/issue-token-form.d.ts +27 -0
- package/dist/pages/tokens/issue-token-form.d.ts.map +1 -0
- package/dist/pages/tokens/issue-token-form.js +270 -0
- package/dist/pages/tokens/issue-token-form.js.map +1 -0
- package/dist/pages/tokens/principal-form.d.ts +8 -0
- package/dist/pages/tokens/principal-form.d.ts.map +1 -0
- package/dist/pages/tokens/principal-form.js +155 -0
- package/dist/pages/tokens/principal-form.js.map +1 -0
- package/dist/pages/tokens/trusted-publishers-controller.d.ts +42 -0
- package/dist/pages/tokens/trusted-publishers-controller.d.ts.map +1 -0
- package/dist/pages/tokens/trusted-publishers-controller.js +202 -0
- package/dist/pages/tokens/trusted-publishers-controller.js.map +1 -0
- package/dist/pages/tokens/trusted-publishers.d.ts +6 -0
- package/dist/pages/tokens/trusted-publishers.d.ts.map +1 -0
- package/dist/pages/tokens/trusted-publishers.js +116 -0
- package/dist/pages/tokens/trusted-publishers.js.map +1 -0
- package/dist/pages/tokens.d.ts +100 -6
- package/dist/pages/tokens.d.ts.map +1 -1
- package/dist/pages/tokens.js +324 -86
- package/dist/pages/tokens.js.map +1 -1
- package/dist/setup.d.ts +3 -2
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +70 -10
- package/dist/setup.js.map +1 -1
- package/dist/token-pending.d.ts +4 -0
- package/dist/token-pending.d.ts.map +1 -0
- package/dist/token-pending.js +12 -0
- package/dist/token-pending.js.map +1 -0
- package/package.json +3 -3
- package/dist/assets/app.b2abf3c46f6e.js +0 -15
- package/dist/assets/app.e8cea8b32d3a.css +0 -2
- package/dist/assets/setup.98343039898f.js +0 -1
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { buildListFilterHash } from '../../page-hash.js';
|
|
3
|
+
import { mirrorOutcome, sourceSyncResponse, SYNC_REQUESTED } from '../sources/sync-copy.js';
|
|
4
|
+
import { useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';
|
|
5
|
+
import { SOURCE_TYPE_LABELS } from '../sources/source-form.js';
|
|
6
|
+
import { Button } from '../../components/ui/button.js';
|
|
7
|
+
import { Input } from '../../components/ui/input.js';
|
|
8
|
+
import { Label } from '../../components/ui/label.js';
|
|
9
|
+
import { Select } from '../../components/ui/select.js';
|
|
10
|
+
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from '../../components/ui/dialog.js';
|
|
11
|
+
export function sourceHealth(source) {
|
|
12
|
+
if (source.status === 'paused')
|
|
13
|
+
return 'Paused · Enable this source to sync.';
|
|
14
|
+
if (source.lastError)
|
|
15
|
+
return 'Last check failed';
|
|
16
|
+
return source.lastSuccessAt ? 'Last check succeeded' : 'Not checked yet';
|
|
17
|
+
}
|
|
18
|
+
export function mirrorSource(source) {
|
|
19
|
+
return (['packagist_proxy', 'npmjs_proxy', 'npm_registry'].includes(source.type) &&
|
|
20
|
+
'attached' in source &&
|
|
21
|
+
source.attached);
|
|
22
|
+
}
|
|
23
|
+
export function canSync(source, organization, project, projectId) {
|
|
24
|
+
return source.projectId === null
|
|
25
|
+
? organization.includes('org:sources:write')
|
|
26
|
+
: source.projectId === projectId && project.includes('project:sources:write');
|
|
27
|
+
}
|
|
28
|
+
export function syncScope(source) {
|
|
29
|
+
if (['packagist_proxy', 'npmjs_proxy', 'npm_registry'].includes(source.type))
|
|
30
|
+
return 'Checks packages already held from this source when their metadata is due for refresh. This does not download the whole registry.';
|
|
31
|
+
return source.type === 'vcs'
|
|
32
|
+
? 'Syncs the Composer package from this configured Git repository.'
|
|
33
|
+
: "Syncs packages selected in this source's settings.";
|
|
34
|
+
}
|
|
35
|
+
export function createSourceActions(services, scope) {
|
|
36
|
+
const { client } = services;
|
|
37
|
+
let state = {
|
|
38
|
+
loading: true,
|
|
39
|
+
busy: false,
|
|
40
|
+
organization: [],
|
|
41
|
+
permissions: [],
|
|
42
|
+
projects: [],
|
|
43
|
+
project: null,
|
|
44
|
+
sources: [],
|
|
45
|
+
error: null,
|
|
46
|
+
notice: null,
|
|
47
|
+
requested: [],
|
|
48
|
+
available: null,
|
|
49
|
+
};
|
|
50
|
+
const listeners = new Set();
|
|
51
|
+
const set = (patch) => {
|
|
52
|
+
state = { ...state, ...patch };
|
|
53
|
+
listeners.forEach((fn) => fn());
|
|
54
|
+
};
|
|
55
|
+
let generation = 0;
|
|
56
|
+
async function selectProject(slug) {
|
|
57
|
+
const current = ++generation;
|
|
58
|
+
set({
|
|
59
|
+
loading: true,
|
|
60
|
+
busy: false,
|
|
61
|
+
project: null,
|
|
62
|
+
permissions: [],
|
|
63
|
+
sources: [],
|
|
64
|
+
error: null,
|
|
65
|
+
notice: null,
|
|
66
|
+
available: null,
|
|
67
|
+
});
|
|
68
|
+
if (slug === null) {
|
|
69
|
+
const sources = [];
|
|
70
|
+
let after;
|
|
71
|
+
do {
|
|
72
|
+
const result = await client.request('get', '/_pb/sources', {
|
|
73
|
+
query: { ownership: 'organization', limit: '100', ...(after ? { after } : {}) },
|
|
74
|
+
});
|
|
75
|
+
if (current !== generation)
|
|
76
|
+
return;
|
|
77
|
+
if (!result.ok) {
|
|
78
|
+
set({ loading: false, error: 'Sources could not be loaded. Try again.' });
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
sources.push(...result.data.items);
|
|
82
|
+
after = result.data.next ?? undefined;
|
|
83
|
+
} while (after);
|
|
84
|
+
set({ loading: false, sources });
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const [project, permissions] = await Promise.all([
|
|
88
|
+
client.request('get', '/_pb/projects/{project}', { params: { project: slug } }),
|
|
89
|
+
client.request('get', '/_pb/projects/{project}/permissions', { params: { project: slug } }),
|
|
90
|
+
]);
|
|
91
|
+
if (current !== generation)
|
|
92
|
+
return;
|
|
93
|
+
if (!project.ok || project.data.status !== 'active' || !permissions.ok) {
|
|
94
|
+
set({
|
|
95
|
+
loading: false,
|
|
96
|
+
error: 'Project access could not be loaded. Choose an active project.',
|
|
97
|
+
});
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const sources = [];
|
|
101
|
+
let after;
|
|
102
|
+
do {
|
|
103
|
+
const result = await client.request('get', '/_pb/projects/{project}/sources', {
|
|
104
|
+
params: { project: slug },
|
|
105
|
+
query: { limit: '100', ...(after ? { after } : {}) },
|
|
106
|
+
});
|
|
107
|
+
if (current !== generation)
|
|
108
|
+
return;
|
|
109
|
+
if (!result.ok) {
|
|
110
|
+
set({ loading: false, error: 'Sources could not be loaded. Try again.' });
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
sources.push(...result.data.items.filter((source) => source.attached));
|
|
114
|
+
after = result.data.next ?? undefined;
|
|
115
|
+
} while (after);
|
|
116
|
+
set({ loading: false, project: project.data, permissions: permissions.data.project, sources });
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
snapshot: () => state,
|
|
120
|
+
subscribe: (fn) => {
|
|
121
|
+
listeners.add(fn);
|
|
122
|
+
return () => {
|
|
123
|
+
listeners.delete(fn);
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
selectProject,
|
|
127
|
+
clearFeedback() {
|
|
128
|
+
set({ notice: null, error: null, available: null });
|
|
129
|
+
},
|
|
130
|
+
async load() {
|
|
131
|
+
const permissions = await client.request('get', '/_pb/me/permissions');
|
|
132
|
+
set({ organization: permissions.ok ? permissions.data.organization : [] });
|
|
133
|
+
if (scope === null) {
|
|
134
|
+
const projects = [];
|
|
135
|
+
let after;
|
|
136
|
+
do {
|
|
137
|
+
const result = await client.request('get', '/_pb/projects', {
|
|
138
|
+
query: { status: 'active', limit: '100', ...(after ? { after } : {}) },
|
|
139
|
+
});
|
|
140
|
+
if (!result.ok)
|
|
141
|
+
break;
|
|
142
|
+
const allowed = await Promise.all(result.data.items
|
|
143
|
+
.filter((p) => p.status === 'active')
|
|
144
|
+
.map(async (p) => {
|
|
145
|
+
const access = await client.request('get', '/_pb/projects/{project}/permissions', {
|
|
146
|
+
params: { project: p.slug },
|
|
147
|
+
});
|
|
148
|
+
return access.ok && access.data.project.includes('project:sources:write')
|
|
149
|
+
? p
|
|
150
|
+
: null;
|
|
151
|
+
}));
|
|
152
|
+
projects.push(...allowed.filter((p) => p !== null));
|
|
153
|
+
after = result.data.next ?? undefined;
|
|
154
|
+
} while (after);
|
|
155
|
+
set({ projects });
|
|
156
|
+
}
|
|
157
|
+
await selectProject(scope);
|
|
158
|
+
},
|
|
159
|
+
async submit(mode, sourceId, name) {
|
|
160
|
+
const source = state.sources.find((s) => s.id === sourceId);
|
|
161
|
+
if (!source || state.busy || state.loading || source.status === 'paused')
|
|
162
|
+
return;
|
|
163
|
+
if (mode === 'mirror' &&
|
|
164
|
+
(!state.project ||
|
|
165
|
+
!state.permissions.includes('project:sources:write') ||
|
|
166
|
+
!mirrorSource(source)))
|
|
167
|
+
return;
|
|
168
|
+
if (mode === 'sync' &&
|
|
169
|
+
(!canSync(source, state.organization, state.permissions, state.project?.id ?? null) ||
|
|
170
|
+
state.requested.includes(source.id)))
|
|
171
|
+
return;
|
|
172
|
+
name = name.trim();
|
|
173
|
+
if (mode === 'mirror' && (!name || name.length > 428)) {
|
|
174
|
+
set({ error: 'Enter a package name of 1 to 428 characters.' });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const current = generation;
|
|
178
|
+
set({ busy: true, error: null, notice: null, available: null });
|
|
179
|
+
const response = mode === 'mirror'
|
|
180
|
+
? await client.request('post', '/_pb/projects/{project}/sources/{source}/packages', {
|
|
181
|
+
params: { project: state.project.slug, source: source.id },
|
|
182
|
+
body: { name },
|
|
183
|
+
})
|
|
184
|
+
: source.projectId === null
|
|
185
|
+
? await client.request('post', '/_pb/sources/{source}/sync', {
|
|
186
|
+
params: { source: source.id },
|
|
187
|
+
})
|
|
188
|
+
: await client.request('post', '/_pb/projects/{project}/sources/{source}/sync', {
|
|
189
|
+
params: { project: state.project.slug, source: source.id },
|
|
190
|
+
});
|
|
191
|
+
if (current !== generation)
|
|
192
|
+
return;
|
|
193
|
+
const result = mode === 'sync' ? sourceSyncResponse(response) : response;
|
|
194
|
+
if (result.ok)
|
|
195
|
+
set({
|
|
196
|
+
busy: false,
|
|
197
|
+
notice: mode === 'mirror' ? mirrorOutcome(result.status, name, source.name) : SYNC_REQUESTED,
|
|
198
|
+
available: mode === 'mirror' && result.status === 200 ? { name, source: source.id } : null,
|
|
199
|
+
requested: mode === 'sync' ? [...state.requested, source.id] : state.requested,
|
|
200
|
+
});
|
|
201
|
+
else
|
|
202
|
+
set({
|
|
203
|
+
busy: false,
|
|
204
|
+
error: result.status === 403
|
|
205
|
+
? 'You no longer have permission to sync this source. Your selection has been kept.'
|
|
206
|
+
: result.code === 'source_paused'
|
|
207
|
+
? 'This source is paused. Enable it before syncing.'
|
|
208
|
+
: result.code === 'package_not_found'
|
|
209
|
+
? `No packages match ‘${name}’ in ${source.name}. Check the name or choose another source.`
|
|
210
|
+
: result.status === 400
|
|
211
|
+
? 'Enter a valid package name for this source.'
|
|
212
|
+
: "Sync couldn't be queued. Try again shortly.",
|
|
213
|
+
});
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
export function AddChoices({ ecosystem, mirror, setup, imported, onMirror, sourceLink, }) {
|
|
218
|
+
return (_jsxs("div", { className: "grid gap-4 lg:grid-cols-2", children: [_jsxs("div", { className: "rounded border p-4", children: [_jsx("h3", { className: "font-semibold", children: "From a mirror" }), _jsx("p", { children: ecosystem === 'npm'
|
|
219
|
+
? 'Find packages in a connected npm registry.'
|
|
220
|
+
: 'Find packages in Packagist or another connected Composer repository.' }), mirror ? (_jsx(Button, { className: "mt-2 min-h-11", onClick: onMirror, children: "From a mirror" })) : (_jsx("p", { children: "A project source manager can add packages from a mirror." }))] }), ecosystem === 'composer' ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "rounded border p-4", children: [_jsx("h3", { className: "font-semibold", children: "From a connected GitHub organization" }), _jsx("p", { children: "Choose repositories your GitHub connection can access." }), _jsx("p", { children: "Organization picker \u00B7 Coming soon" }), setup ? (_jsx("a", { className: "inline-flex min-h-11 items-center underline", href: `${sourceLink}&provider=github`, children: "Set up a GitHub repository source" })) : (_jsx("p", { children: "Ask an organization source manager to connect GitHub." }))] }), _jsxs("div", { className: "rounded border p-4", children: [_jsx("h3", { className: "font-semibold", children: "By repository URL" }), _jsx("p", { children: "Add a Composer package from a Git repository." }), setup ? (_jsx("a", { className: "inline-flex min-h-11 items-center underline", href: sourceLink, children: "By repository URL" })) : (_jsx("p", { children: "A source manager can add a Git repository." }))] })] })) : null, _jsxs("div", { className: "rounded border p-4", children: [_jsx("h3", { className: "font-semibold", children: "Import configuration" }), _jsx("p", { children: "Bring source and package selections from a Satis configuration using the CLI." }), _jsx("code", { className: "break-all", children: "pb import satis plan" }), imported ? (_jsx("a", { href: "#/import", className: "flex min-h-11 items-center underline", children: "Import review" })) : (_jsx("p", { children: "An organization import manager can review imports." }))] }), _jsxs("div", { className: "lg:col-span-2", children: [_jsx("h3", { className: "font-semibold", children: "Upload a private package" }), _jsx("p", { children: "Publish a package archive for this project." }), _jsx("p", { children: "Coming soon \u00B7 Upload and publishing belong to #947." })] })] }));
|
|
221
|
+
}
|
|
222
|
+
export function PackageSourceControls({ services, project, onSourcesChanged, }) {
|
|
223
|
+
const model = useMemo(() => createSourceActions(services, project), [services, project]);
|
|
224
|
+
const state = useSyncExternalStore(model.subscribe, model.snapshot, model.snapshot);
|
|
225
|
+
const sourceSignature = state.loading
|
|
226
|
+
? null
|
|
227
|
+
: JSON.stringify(state.sources.map((source) => [source.id, source.name]));
|
|
228
|
+
useEffect(() => {
|
|
229
|
+
if (sourceSignature !== null)
|
|
230
|
+
onSourcesChanged?.(state.project?.slug ?? project, sourceSignature);
|
|
231
|
+
}, [sourceSignature, onSourcesChanged, state.project?.slug, project]);
|
|
232
|
+
const [mode, setMode] = useState(null);
|
|
233
|
+
const [ecosystem, setEcosystem] = useState('composer');
|
|
234
|
+
const [sourceId, setSource] = useState('');
|
|
235
|
+
const [sourceError, setSourceError] = useState(false);
|
|
236
|
+
const [name, setName] = useState('');
|
|
237
|
+
const result = useRef(null);
|
|
238
|
+
useEffect(() => {
|
|
239
|
+
void model.load();
|
|
240
|
+
}, [model]);
|
|
241
|
+
useEffect(() => {
|
|
242
|
+
if (state.notice || state.error)
|
|
243
|
+
result.current?.focus();
|
|
244
|
+
}, [state.notice, state.error]);
|
|
245
|
+
const source = state.sources.find((s) => s.id === sourceId);
|
|
246
|
+
const manager = state.permissions.includes('project:sources:write');
|
|
247
|
+
const orgManager = state.organization.includes('org:sources:write');
|
|
248
|
+
const setup = project === null ? orgManager : manager;
|
|
249
|
+
const sources = state.sources.filter((s) => mode !== 'mirror' || (s.ecosystem === ecosystem && mirrorSource(s)));
|
|
250
|
+
const authorized = source &&
|
|
251
|
+
(mode === 'mirror'
|
|
252
|
+
? manager && !!state.project
|
|
253
|
+
: canSync(source, state.organization, state.permissions, state.project?.id ?? null));
|
|
254
|
+
const link = `#/sources?create=vcs${project ? `&project=${encodeURIComponent(project)}` : ''}`;
|
|
255
|
+
function open(next) {
|
|
256
|
+
setSource('');
|
|
257
|
+
setSourceError(false);
|
|
258
|
+
setName('');
|
|
259
|
+
model.clearFeedback();
|
|
260
|
+
setMode(next);
|
|
261
|
+
}
|
|
262
|
+
return (_jsxs(_Fragment, { children: [_jsx("p", { className: "my-3 text-neutral-600", children: project
|
|
263
|
+
? `Packages available to ${state.project?.name ?? project}.`
|
|
264
|
+
: 'Packages available across your organization.' }), _jsxs("div", { className: "flex flex-wrap gap-3", children: [_jsx(Button, { className: "min-h-11", onClick: () => open('choices'), children: "Add package" }), _jsx(Button, { className: "min-h-11", variant: "outline", onClick: () => open('sync'), children: "Sync from source" })] }), mode ? (_jsx(Dialog, { open: true, onOpenChange: (open) => {
|
|
265
|
+
if (!open)
|
|
266
|
+
setMode(null);
|
|
267
|
+
}, children: _jsxs(DialogContent, { variant: "source", className: "lg:max-w-5xl", children: [_jsxs(DialogHeader, { className: "shrink-0 p-6 pr-16", children: [_jsx(DialogTitle, { children: mode === 'sync' ? 'Sync from source' : 'Add package' }), _jsx(DialogDescription, { children: mode === 'sync'
|
|
268
|
+
? 'Check a source for package updates.'
|
|
269
|
+
: state.project
|
|
270
|
+
? `Add packages to ${state.project.name}.`
|
|
271
|
+
: 'Choose how to add packages to a project.' })] }), _jsxs("div", { className: "min-h-0 overflow-y-auto px-6 pb-6", children: [state.loading ? _jsx("p", { role: "status", children: "Loading sources\u2026" }) : null, mode === 'choices' ? (_jsxs(_Fragment, { children: [_jsx(Label, { htmlFor: "choice-ecosystem", children: "Ecosystem" }), _jsxs(Select, { className: "mb-4 min-h-11", id: "choice-ecosystem", value: ecosystem, onChange: (e) => setEcosystem(e.target.value), children: [_jsx("option", { value: "composer", children: "Composer" }), _jsx("option", { value: "npm", children: "npm" })] }), _jsx(AddChoices, { ecosystem: ecosystem, mirror: project === null ? state.projects.length > 0 : manager, setup: setup, imported: state.organization.includes('org:import:write'), sourceLink: link, onMirror: () => setMode('mirror') })] })) : (_jsxs("form", { id: "source-action-form", className: "grid gap-4 lg:grid-cols-2", onSubmit: (e) => {
|
|
272
|
+
e.preventDefault();
|
|
273
|
+
if (source)
|
|
274
|
+
void model.submit(mode, source.id, name);
|
|
275
|
+
}, children: [project === null ? (_jsxs("div", { children: [_jsx(Label, { htmlFor: "destination-project", children: "Project" }), _jsxs(Select, { id: "destination-project", className: "min-h-11", disabled: state.busy, value: state.project?.slug ?? '', onChange: (e) => {
|
|
276
|
+
setSource('');
|
|
277
|
+
setSourceError(false);
|
|
278
|
+
void model.selectProject(e.target.value || null);
|
|
279
|
+
}, children: [_jsx("option", { value: "", children: mode === 'sync' ? 'Organization sources' : 'Choose a project' }), state.projects.map((p) => (_jsx("option", { value: p.slug, children: p.name }, p.id)))] })] })) : null, mode === 'mirror' ? (_jsxs("div", { children: [_jsx(Label, { htmlFor: "mirror-ecosystem", children: "Ecosystem" }), _jsxs(Select, { id: "mirror-ecosystem", className: "min-h-11", value: ecosystem, disabled: state.busy, onChange: (e) => {
|
|
280
|
+
setEcosystem(e.target.value);
|
|
281
|
+
setSource('');
|
|
282
|
+
setSourceError(false);
|
|
283
|
+
}, children: [_jsx("option", { value: "composer", children: "Composer" }), _jsx("option", { value: "npm", children: "npm" })] })] })) : null, _jsxs("div", { children: [_jsx(Label, { htmlFor: "package-source", children: "Source" }), _jsxs(Select, { id: "package-source", className: "min-h-11", required: true, "aria-invalid": sourceError || undefined, "aria-describedby": sourceError ? 'package-source-error' : undefined, onInvalid: () => setSourceError(true), disabled: state.loading || state.busy, value: sourceId, onChange: (e) => {
|
|
284
|
+
setSource(e.target.value);
|
|
285
|
+
setSourceError(false);
|
|
286
|
+
model.clearFeedback();
|
|
287
|
+
}, children: [_jsx("option", { value: "", children: "Choose a source" }), sources.map((s) => (_jsxs("option", { value: s.id, children: [s.name, " \u00B7 ", SOURCE_TYPE_LABELS[s.type], " \u00B7 ", sourceHealth(s)] }, s.id)))] }), sourceError ? (_jsx("p", { id: "package-source-error", role: "alert", children: "Choose a source." })) : null] }), mode === 'mirror' ? (_jsxs("div", { children: [_jsx(Label, { htmlFor: "mirror-package", children: "Find a package" }), _jsx(Input, { id: "mirror-package", className: "min-h-11", required: true, maxLength: 428, disabled: state.busy, value: name, onChange: (e) => {
|
|
288
|
+
setName(e.target.value);
|
|
289
|
+
model.clearFeedback();
|
|
290
|
+
}, "aria-describedby": "mirror-help" }), _jsx("p", { id: "mirror-help", children: "This source does not support search. Enter the full package name." })] })) : null, _jsxs("div", { className: "space-y-3 lg:col-span-2", children: [!sources.length && !state.loading ? (_jsx("p", { children: state.project
|
|
291
|
+
? `No sources available for ${state.project.name}. Attach a source before adding packages.`
|
|
292
|
+
: mode === 'mirror'
|
|
293
|
+
? 'Choose a destination project before adding packages.'
|
|
294
|
+
: 'No sources available.' })) : null, !sources.length && setup && !state.loading ? (_jsx("a", { className: "inline-flex min-h-11 items-center underline", href: `#/sources${state.project ? `?project=${encodeURIComponent(state.project.slug)}` : ''}`, children: "Manage sources" })) : null, source ? (_jsxs(_Fragment, { children: [_jsx("p", { children: source.projectId === null
|
|
295
|
+
? 'Shared organization source'
|
|
296
|
+
: `Only ${state.project?.name ?? project}` }), _jsx("p", { children: sourceHealth(source) }), source.status === 'paused' ? (_jsx("p", { children: "This source is paused. Enable it before syncing." })) : null, mode === 'sync' && state.requested.includes(source.id) && !state.notice ? (_jsx("p", { role: "status", children: SYNC_REQUESTED })) : null, mode === 'sync' ? (_jsxs(_Fragment, { children: [_jsx("h3", { className: "font-semibold", children: mirrorSource(source) ||
|
|
297
|
+
['packagist_proxy', 'npmjs_proxy'].includes(source.type)
|
|
298
|
+
? 'Check cached packages for updates'
|
|
299
|
+
: 'All configured packages' }), _jsx("p", { children: syncScope(source) }), source.type === 'composer_repository' &&
|
|
300
|
+
source.config &&
|
|
301
|
+
'selection' in source.config ? (_jsxs("p", { className: "break-words", children: ["Configured selection:", ' ', [
|
|
302
|
+
...(source.config.selection?.packages ?? []),
|
|
303
|
+
...(source.config.selection?.patterns ?? []),
|
|
304
|
+
].join(', ') || 'No packages selected.'] })) : null, source.projectId === null ? (_jsx("p", { children: "This source is shared. Updated metadata can be used by other attached projects." })) : null, !authorized ? (_jsx("p", { children: source.projectId === null
|
|
305
|
+
? 'An organization source manager can sync this source.'
|
|
306
|
+
: 'A project source manager can sync this source.' })) : null] })) : (_jsxs(_Fragment, { children: [_jsx("p", { children: "Checks this source and queues the package if it is not already available." }), _jsx("p", { children: "This syncs the selected packages. Dependencies are fetched through your project's sources when requested." })] }))] })) : null] })] })), state.notice || state.error ? (_jsxs("div", { ref: result, tabIndex: -1, className: "mt-4 break-words", role: state.error ? 'alert' : 'status', "aria-live": "polite", children: [_jsx("h3", { className: "font-semibold", children: state.error ? 'Request could not be completed' : 'Request outcome' }), _jsx("p", { children: state.error ?? state.notice }), state.available ? (_jsx("a", { className: "inline-flex min-h-11 items-center underline", href: buildListFilterHash('packages', {
|
|
307
|
+
project: state.project?.slug ?? null,
|
|
308
|
+
q: state.available.name,
|
|
309
|
+
source: state.available.source,
|
|
310
|
+
}), children: "View" })) : null, state.notice ? (_jsx("a", { className: "inline-flex min-h-11 items-center underline", href: `#/sources${state.project ? `?project=${encodeURIComponent(state.project.slug)}` : ''}`, children: "View sources" })) : null] })) : null] }), _jsx(DialogFooter, { className: "shrink-0 border-t bg-white p-4 pb-[max(1rem,env(safe-area-inset-bottom))]", children: mode !== 'choices' && authorized && source?.status !== 'paused' ? (_jsx(Button, { className: "min-h-11", form: "source-action-form", type: "submit", disabled: state.busy ||
|
|
311
|
+
state.loading ||
|
|
312
|
+
!!state.notice ||
|
|
313
|
+
(mode === 'sync' && state.requested.includes(source.id)), children: state.busy
|
|
314
|
+
? 'Requesting…'
|
|
315
|
+
: mode === 'mirror'
|
|
316
|
+
? 'Add package'
|
|
317
|
+
: 'Request source sync' })) : null })] }) })) : null] }));
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=source-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-actions.js","sourceRoot":"","sources":["../../../src/pages/packages/source-actions.tsx"],"names":[],"mappings":"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"}
|
package/dist/pages/packages.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { operations } from '../api-types.js';
|
|
2
2
|
import { type ShellServices, type ReplayResult } from '../auth.js';
|
|
3
|
-
export type PackageItem = operations['listPackages']['responses'][200]['content']['application/json']['items'][number]
|
|
3
|
+
export type PackageItem = Omit<operations['listPackages']['responses'][200]['content']['application/json']['items'][number], 'visibleToNewProjects' | 'newProjectAccessMode' | 'revision'>;
|
|
4
4
|
export type VersionItem = operations['listPackageVersions']['responses'][200]['content']['application/json']['items'][number];
|
|
5
5
|
type PackageStatus = PackageItem['status'];
|
|
6
6
|
type Action = 'quarantine' | 'tombstone' | 'release';
|
|
@@ -45,10 +45,10 @@ export declare function createPackagesController(services: ShellServices): {
|
|
|
45
45
|
open: (id: string, after?: string) => Promise<void>;
|
|
46
46
|
navigate: (query: PackageQuery, id?: string, after?: string) => Promise<void>;
|
|
47
47
|
refresh: (notice?: string | null) => Promise<void>;
|
|
48
|
-
act: (versionId: string, action: Action, confirmed?: boolean) => Promise<void>;
|
|
48
|
+
act: (versionId: string, action: Action, confirmed?: boolean, reason?: string) => Promise<void>;
|
|
49
49
|
close: () => void;
|
|
50
50
|
cancelTombstone: () => void;
|
|
51
|
-
confirmTombstone(): Promise<void>;
|
|
51
|
+
confirmTombstone(reason: string): Promise<void>;
|
|
52
52
|
dispose(): void;
|
|
53
53
|
};
|
|
54
54
|
export declare function PackageVersions(props: {
|
|
@@ -65,10 +65,21 @@ export declare function PackagesView(props: {
|
|
|
65
65
|
onNext: () => void;
|
|
66
66
|
onVersionNext: () => void;
|
|
67
67
|
onRefresh: () => void;
|
|
68
|
-
onConfirm: () => void;
|
|
68
|
+
onConfirm: (reason: string) => void;
|
|
69
69
|
onCancel: () => void;
|
|
70
70
|
onBack?: () => void;
|
|
71
71
|
}): import("react").JSX.Element;
|
|
72
|
+
type FilterChoice = {
|
|
73
|
+
id: string;
|
|
74
|
+
name: string;
|
|
75
|
+
};
|
|
76
|
+
type FilterChoices = {
|
|
77
|
+
sources: FilterChoice[];
|
|
78
|
+
projects: FilterChoice[];
|
|
79
|
+
};
|
|
80
|
+
export declare function createPackageFilterChoicesLoader(services: ShellServices): ((project: string | null) => Promise<FilterChoices>) & {
|
|
81
|
+
invalidate: () => void;
|
|
82
|
+
};
|
|
72
83
|
export declare function PackagesPage(): import("react").JSX.Element;
|
|
73
84
|
export {};
|
|
74
85
|
//# sourceMappingURL=packages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/pages/packages.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/pages/packages.tsx"],"names":[],"mappings":"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"}
|