@package-broker/ui 2.0.0-rc.3 → 2.0.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/api-types.d.ts +9218 -3014
  3. package/dist/api-types.d.ts.map +1 -1
  4. package/dist/api.d.ts +1 -1
  5. package/dist/api.d.ts.map +1 -1
  6. package/dist/api.js +10 -0
  7. package/dist/api.js.map +1 -1
  8. package/dist/app-path.d.ts +2 -0
  9. package/dist/app-path.d.ts.map +1 -0
  10. package/dist/app-path.js +2 -0
  11. package/dist/app-path.js.map +1 -0
  12. package/dist/app.d.ts +2 -0
  13. package/dist/app.d.ts.map +1 -1
  14. package/dist/app.js +16 -3
  15. package/dist/app.js.map +1 -1
  16. package/dist/assets/access.def9a17dc4a8.js +1 -0
  17. package/dist/assets/app.ec678c27ec0a.css +2 -0
  18. package/dist/assets/{app.e8434f3343de.js → app.fba0d059b40b.js} +5 -5
  19. package/dist/assets/audit.453367b59daf.js +1 -0
  20. package/dist/assets/chunk.2c3648a5bad1.js +1 -0
  21. package/dist/assets/{chunk.bf48b04e6a00.js → chunk.304a2b5d1663.js} +1 -1
  22. package/dist/assets/{chunk.f922af39a279.js → chunk.3f077ff17cea.js} +1 -1
  23. package/dist/assets/chunk.4721d4544d48.js +1 -0
  24. package/dist/assets/{chunk.bb25fc845269.js → chunk.4acf8fa7653f.js} +1 -1
  25. package/dist/assets/{chunk.3704953b4a66.js → chunk.53134c7df4e5.js} +1 -1
  26. package/dist/assets/{chunk.862544cf5835.js → chunk.56e058d97e0f.js} +1 -1
  27. package/dist/assets/chunk.675b635d9462.js +1 -0
  28. package/dist/assets/chunk.75e1357175af.js +1 -0
  29. package/dist/assets/chunk.815f9a91c741.js +1 -0
  30. package/dist/assets/chunk.837eb41f53ef.js +1 -0
  31. package/dist/assets/{chunk.7cb6f6b4daaa.js → chunk.ab1a14143dc6.js} +1 -1
  32. package/dist/assets/{chunk.ce96495b8b55.js → chunk.dc41ee9219cf.js} +1 -1
  33. package/dist/assets/chunk.e3b0c44298fc.js +0 -0
  34. package/dist/assets/chunk.f0fd799728ef.js +1 -0
  35. package/dist/assets/chunk.fac952720b72.js +4 -0
  36. package/dist/assets/import.4275bbce08ac.js +1 -0
  37. package/dist/assets/index.html +9 -6
  38. package/dist/assets/manifest.json +66 -38
  39. package/dist/assets/notifications.bd7d4c3f9882.js +1 -0
  40. package/dist/assets/npm-login.d8b60e11fe87.js +1 -0
  41. package/dist/assets/packages.bdd474bcfc11.js +2 -0
  42. package/dist/assets/projects.44006a838c67.js +1 -0
  43. package/dist/assets/setup.7bc86366227c.js +1 -0
  44. package/dist/assets/setup.html +2 -2
  45. package/dist/assets/sources.d95aabfbec73.js +1 -0
  46. package/dist/assets/tokens.4ee13a722abb.js +4 -0
  47. package/dist/auth.d.ts +23 -3
  48. package/dist/auth.d.ts.map +1 -1
  49. package/dist/auth.js +142 -21
  50. package/dist/auth.js.map +1 -1
  51. package/dist/components/ui/status-badge.d.ts +5 -0
  52. package/dist/components/ui/status-badge.d.ts.map +1 -1
  53. package/dist/components/ui/status-badge.js +10 -0
  54. package/dist/components/ui/status-badge.js.map +1 -1
  55. package/dist/package-limits.d.ts +3 -0
  56. package/dist/package-limits.d.ts.map +1 -0
  57. package/dist/package-limits.js +3 -0
  58. package/dist/package-limits.js.map +1 -0
  59. package/dist/page-hash.d.ts +1 -1
  60. package/dist/page-hash.d.ts.map +1 -1
  61. package/dist/page-hash.js.map +1 -1
  62. package/dist/pages/access/grant-form.d.ts.map +1 -1
  63. package/dist/pages/access/grant-form.js +1 -1
  64. package/dist/pages/access/grant-form.js.map +1 -1
  65. package/dist/pages/audit.d.ts.map +1 -1
  66. package/dist/pages/notification-actions.d.ts +41 -0
  67. package/dist/pages/notification-actions.d.ts.map +1 -0
  68. package/dist/pages/notification-actions.js +187 -0
  69. package/dist/pages/notification-actions.js.map +1 -0
  70. package/dist/pages/notification-draft.d.ts +13 -0
  71. package/dist/pages/notification-draft.d.ts.map +1 -0
  72. package/dist/pages/notification-draft.js +75 -0
  73. package/dist/pages/notification-draft.js.map +1 -0
  74. package/dist/pages/notification-form.d.ts +35 -0
  75. package/dist/pages/notification-form.d.ts.map +1 -0
  76. package/dist/pages/notification-form.js +167 -0
  77. package/dist/pages/notification-form.js.map +1 -0
  78. package/dist/pages/notifications-controller.d.ts +41 -0
  79. package/dist/pages/notifications-controller.d.ts.map +1 -0
  80. package/dist/pages/notifications-controller.js +184 -0
  81. package/dist/pages/notifications-controller.js.map +1 -0
  82. package/dist/pages/notifications.d.ts +10 -0
  83. package/dist/pages/notifications.d.ts.map +1 -0
  84. package/dist/pages/notifications.js +301 -0
  85. package/dist/pages/notifications.js.map +1 -0
  86. package/dist/pages/npm-login.d.ts +2 -0
  87. package/dist/pages/npm-login.d.ts.map +1 -0
  88. package/dist/pages/npm-login.js +62 -0
  89. package/dist/pages/npm-login.js.map +1 -0
  90. package/dist/pages/packages/discovery-labels.d.ts +8 -0
  91. package/dist/pages/packages/discovery-labels.d.ts.map +1 -0
  92. package/dist/pages/packages/discovery-labels.js +25 -0
  93. package/dist/pages/packages/discovery-labels.js.map +1 -0
  94. package/dist/pages/packages/discovery-picker-view.d.ts +8 -0
  95. package/dist/pages/packages/discovery-picker-view.d.ts.map +1 -0
  96. package/dist/pages/packages/discovery-picker-view.js +109 -0
  97. package/dist/pages/packages/discovery-picker-view.js.map +1 -0
  98. package/dist/pages/packages/discovery-picker.d.ts +67 -0
  99. package/dist/pages/packages/discovery-picker.d.ts.map +1 -0
  100. package/dist/pages/packages/discovery-picker.js +238 -0
  101. package/dist/pages/packages/discovery-picker.js.map +1 -0
  102. package/dist/pages/packages/npm-workflow.d.ts +31 -0
  103. package/dist/pages/packages/npm-workflow.d.ts.map +1 -0
  104. package/dist/pages/packages/npm-workflow.js +381 -0
  105. package/dist/pages/packages/npm-workflow.js.map +1 -0
  106. package/dist/pages/packages/package-detail.d.ts +9 -0
  107. package/dist/pages/packages/package-detail.d.ts.map +1 -0
  108. package/dist/pages/packages/package-detail.js +242 -0
  109. package/dist/pages/packages/package-detail.js.map +1 -0
  110. package/dist/pages/packages/source-actions.d.ts +5 -2
  111. package/dist/pages/packages/source-actions.d.ts.map +1 -1
  112. package/dist/pages/packages/source-actions.js +27 -10
  113. package/dist/pages/packages/source-actions.js.map +1 -1
  114. package/dist/pages/packages.d.ts +15 -4
  115. package/dist/pages/packages.d.ts.map +1 -1
  116. package/dist/pages/packages.js +136 -19
  117. package/dist/pages/packages.js.map +1 -1
  118. package/dist/pages/projects/project-form.js +1 -1
  119. package/dist/pages/projects/project-form.js.map +1 -1
  120. package/dist/pages/projects.d.ts.map +1 -1
  121. package/dist/pages/projects.js +1 -1
  122. package/dist/pages/projects.js.map +1 -1
  123. package/dist/pages/sources/discovery-rule-prefill.d.ts +13 -0
  124. package/dist/pages/sources/discovery-rule-prefill.d.ts.map +1 -0
  125. package/dist/pages/sources/discovery-rule-prefill.js +9 -0
  126. package/dist/pages/sources/discovery-rule-prefill.js.map +1 -0
  127. package/dist/pages/sources/discovery-rules-view.d.ts +9 -0
  128. package/dist/pages/sources/discovery-rules-view.d.ts.map +1 -0
  129. package/dist/pages/sources/discovery-rules-view.js +144 -0
  130. package/dist/pages/sources/discovery-rules-view.js.map +1 -0
  131. package/dist/pages/sources/discovery-rules.d.ts +57 -0
  132. package/dist/pages/sources/discovery-rules.d.ts.map +1 -0
  133. package/dist/pages/sources/discovery-rules.js +383 -0
  134. package/dist/pages/sources/discovery-rules.js.map +1 -0
  135. package/dist/pages/sources/source-form.d.ts +3 -2
  136. package/dist/pages/sources/source-form.d.ts.map +1 -1
  137. package/dist/pages/sources/source-form.js +22 -12
  138. package/dist/pages/sources/source-form.js.map +1 -1
  139. package/dist/pages/sources.d.ts +9 -3
  140. package/dist/pages/sources.d.ts.map +1 -1
  141. package/dist/pages/sources.js +59 -12
  142. package/dist/pages/sources.js.map +1 -1
  143. package/dist/pages/tokens/issue-token-form.js +1 -1
  144. package/dist/pages/tokens/issue-token-form.js.map +1 -1
  145. package/dist/pages/tokens/principal-form.d.ts.map +1 -1
  146. package/dist/pages/tokens/principal-form.js +4 -0
  147. package/dist/pages/tokens/principal-form.js.map +1 -1
  148. package/dist/pages/tokens/trusted-publishers-controller.d.ts +42 -0
  149. package/dist/pages/tokens/trusted-publishers-controller.d.ts.map +1 -0
  150. package/dist/pages/tokens/trusted-publishers-controller.js +202 -0
  151. package/dist/pages/tokens/trusted-publishers-controller.js.map +1 -0
  152. package/dist/pages/tokens/trusted-publishers.d.ts +6 -0
  153. package/dist/pages/tokens/trusted-publishers.d.ts.map +1 -0
  154. package/dist/pages/tokens/trusted-publishers.js +116 -0
  155. package/dist/pages/tokens/trusted-publishers.js.map +1 -0
  156. package/dist/pages/tokens.d.ts +53 -0
  157. package/dist/pages/tokens.d.ts.map +1 -1
  158. package/dist/pages/tokens.js +9 -2
  159. package/dist/pages/tokens.js.map +1 -1
  160. package/dist/pending.d.ts +6 -1
  161. package/dist/pending.d.ts.map +1 -1
  162. package/dist/pending.js +1 -1
  163. package/dist/pending.js.map +1 -1
  164. package/dist/setup.d.ts +3 -2
  165. package/dist/setup.d.ts.map +1 -1
  166. package/dist/setup.js +66 -9
  167. package/dist/setup.js.map +1 -1
  168. package/package.json +3 -3
  169. package/dist/assets/access.6859f43998ca.js +0 -1
  170. package/dist/assets/app.f15f8f21f88b.css +0 -2
  171. package/dist/assets/audit.576009342714.js +0 -1
  172. package/dist/assets/chunk.297a2d571f9c.js +0 -4
  173. package/dist/assets/chunk.6e23a75a1324.js +0 -1
  174. package/dist/assets/chunk.855a50f45830.js +0 -1
  175. package/dist/assets/chunk.976a2ff4338e.js +0 -1
  176. package/dist/assets/import.e2a1e35fcb8d.js +0 -1
  177. package/dist/assets/packages.a8726e5144de.js +0 -1
  178. package/dist/assets/projects.711deb86b7c9.js +0 -1
  179. package/dist/assets/setup.dfed30ecfbad.js +0 -1
  180. package/dist/assets/sources.d0ba0048bd96.js +0 -1
  181. package/dist/assets/tokens.f48d235e8d25.js +0 -4
@@ -0,0 +1,383 @@
1
+ import { revisionTag } from '../management.js';
2
+ import { PATTERN_ERROR, validDiscoveryPattern, } from '../packages/discovery-labels.js';
3
+ import { drafts } from './discovery-rule-prefill.js';
4
+ export function ruleFailure(result) {
5
+ if (result.status === 412)
6
+ return 'This rule changed while you were editing. The newer rule is shown. Review the latest settings before saving.';
7
+ if (result.status === 404)
8
+ return 'This discovery rule is no longer available. Reload the rules.';
9
+ if (result.code === 'duplicate')
10
+ return 'A discovery rule with this name already exists. Choose another name.';
11
+ if (result.code === 'reauth_required')
12
+ return 'Sign in again, then confirm the discovery rule settings.';
13
+ if (result.status === 429)
14
+ return 'GitHub is rate limiting requests. Try again later.';
15
+ if (result.status === 409 && result.code === 'discovery_rule_disabled')
16
+ return 'Enable this rule before requesting a scan.';
17
+ if (result.status === 409)
18
+ return 'The rule conflicts with its current state. Reload and try again.';
19
+ if (result.status === 403)
20
+ return 'You do not have permission to change discovery rules.';
21
+ return 'Discovery rules could not be updated. Check the settings and try again.';
22
+ }
23
+ export function runFailure(reason, failed = 0) {
24
+ if (reason !== 'disabled' && reason !== 'discovery_failed')
25
+ return `Finished with ${failed} failed repositories`;
26
+ return reason === 'disabled'
27
+ ? 'The rule was disabled before the scan finished.'
28
+ : 'The scan could not finish. Check the GitHub connection and try again.';
29
+ }
30
+ export function ruleState(rule) {
31
+ if (!rule.enabled)
32
+ return 'Disabled';
33
+ if (!('outcome' in rule))
34
+ return 'Current run information is available to source managers.';
35
+ if (rule.outcome === 'running')
36
+ return 'Running';
37
+ if (rule.outcome === 'rate_limited')
38
+ return 'Waiting for GitHub rate limit';
39
+ if (rule.outcome === 'failed')
40
+ return runFailure(rule.failureReason, rule.failed);
41
+ return 'Waiting for the next scheduled scan';
42
+ }
43
+ export function scheduleWords(seconds) {
44
+ if (seconds % 86400 === 0)
45
+ return seconds === 86400 ? 'Every day' : `Every ${seconds / 86400} days`;
46
+ if (seconds % 3600 === 0)
47
+ return seconds === 3600 ? 'Every hour' : `Every ${seconds / 3600} hours`;
48
+ const hours = Math.floor(seconds / 3600);
49
+ const minutes = Math.floor((seconds % 3600) / 60);
50
+ return `Every ${hours ? `${hours} ${hours === 1 ? 'hour' : 'hours'} and ` : ''}${minutes} ${minutes === 1 ? 'minute' : 'minutes'}`;
51
+ }
52
+ export function createDiscoveryRules(services) {
53
+ const restored = drafts.get(services);
54
+ let state = {
55
+ visible: false,
56
+ manager: false,
57
+ loading: true,
58
+ busy: false,
59
+ reauthPending: restored?.reauthPending ?? false,
60
+ items: [],
61
+ next: null,
62
+ connections: [],
63
+ connectionsError: false,
64
+ draft: restored?.options ?? null,
65
+ editing: restored?.id ?? null,
66
+ revision: restored?.revision ?? null,
67
+ stale: false,
68
+ error: null,
69
+ notice: null,
70
+ patternError: null,
71
+ };
72
+ let generation = 0;
73
+ const listeners = new Set();
74
+ const set = (patch) => {
75
+ state = { ...state, ...patch };
76
+ listeners.forEach((fn) => fn());
77
+ };
78
+ const remember = () => {
79
+ if (state.draft)
80
+ drafts.set(services, {
81
+ options: state.draft,
82
+ id: state.editing,
83
+ revision: state.revision,
84
+ reauthPending: state.reauthPending,
85
+ });
86
+ else
87
+ drafts.delete(services);
88
+ };
89
+ async function load(more = false, announce = true) {
90
+ if (state.busy || (more && !state.next))
91
+ return;
92
+ const request = ++generation;
93
+ set({
94
+ loading: true,
95
+ error: null,
96
+ ...(announce ? { notice: 'Loading discovery rules…' } : {}),
97
+ });
98
+ const permissions = await services.client.request('get', '/_pb/me/permissions');
99
+ if (request !== generation)
100
+ return;
101
+ const manager = permissions.ok && permissions.data.organization.includes('org:sources:write');
102
+ const visible = manager || (permissions.ok && permissions.data.organization.includes('org:sources:read'));
103
+ set({ manager, visible });
104
+ if (!visible) {
105
+ set({
106
+ loading: false,
107
+ items: [],
108
+ draft: null,
109
+ error: permissions.ok ? null : 'Discovery rule permissions could not be loaded. Try again.',
110
+ });
111
+ return;
112
+ }
113
+ const [rules, connections] = await Promise.all([
114
+ services.client.request('get', '/_pb/sources/discovery/rules', more ? { query: { after: state.next } } : {}),
115
+ manager ? services.client.request('get', '/_pb/sources/discovery/connections') : null,
116
+ ]);
117
+ if (request !== generation)
118
+ return;
119
+ set({
120
+ loading: false,
121
+ ...(announce ? { notice: null } : {}),
122
+ connections: connections?.ok ? connections.data.items : [],
123
+ connectionsError: manager && !connections?.ok,
124
+ ...(rules.ok
125
+ ? {
126
+ items: more
127
+ ? [...new Map([...state.items, ...rules.data.items].map((r) => [r.id, r])).values()]
128
+ : rules.data.items,
129
+ next: rules.data.next,
130
+ }
131
+ : { error: 'Discovery rules could not be loaded. Try again.' }),
132
+ });
133
+ }
134
+ async function failed(result, rule, effect = 'The scan restarts.') {
135
+ set({ error: ruleFailure(result) });
136
+ if (result.code === 'reauth_required') {
137
+ set({ reauthPending: true });
138
+ remember();
139
+ services.requireReauth(result.request, {
140
+ credential: false,
141
+ secretFields: [],
142
+ display: {
143
+ label: `Change discovery rule ${rule?.name ?? state.draft?.name ?? 'New rule'}`,
144
+ effect,
145
+ scope: 'Organization sources',
146
+ },
147
+ });
148
+ }
149
+ if (result.status === 412 && rule) {
150
+ set({ stale: state.editing === rule.id && state.draft !== null });
151
+ const request = generation;
152
+ const latest = await services.client.request('get', '/_pb/sources/discovery/rules/{id}', {
153
+ params: { id: rule.id },
154
+ });
155
+ if (request !== generation)
156
+ return;
157
+ if (latest.ok)
158
+ set({
159
+ items: state.items.some((r) => r.id === rule.id)
160
+ ? state.items.map((r) => (r.id === rule.id ? latest.data : r))
161
+ : [...state.items, latest.data],
162
+ });
163
+ else
164
+ set({ error: ruleFailure(latest) });
165
+ }
166
+ }
167
+ async function mutate(action, notice, rule, effect = 'The scan restarts.') {
168
+ if (!state.manager || state.busy || state.reauthPending || state.loading || state.stale)
169
+ return;
170
+ set({ busy: true, error: null, notice: null });
171
+ const result = await action();
172
+ if (!result.ok)
173
+ await failed(result, rule, effect);
174
+ set({ busy: false });
175
+ if (result.ok) {
176
+ await load(false, false);
177
+ set({ notice });
178
+ }
179
+ if (!result.ok && result.status === 404) {
180
+ await load(false, false);
181
+ set({ error: ruleFailure(result) });
182
+ }
183
+ return result.ok;
184
+ }
185
+ const edit = (rule, prefill) => {
186
+ if (!state.manager || state.busy || state.reauthPending || state.loading || state.draft)
187
+ return;
188
+ const c = state.connections[0];
189
+ const options = rule
190
+ ? {
191
+ name: rule.name,
192
+ pattern: rule.pattern,
193
+ ecosystem: rule.ecosystem,
194
+ includeForks: rule.includeForks,
195
+ enabled: rule.enabled,
196
+ intervalSeconds: rule.intervalSeconds,
197
+ credentialId: 'credentialId' in rule ? rule.credentialId : '',
198
+ installationId: 'installationId' in rule ? rule.installationId : 0,
199
+ }
200
+ : {
201
+ name: '',
202
+ credentialId: c?.credentialId ?? '',
203
+ installationId: c?.installationId ?? 0,
204
+ ecosystem: 'both',
205
+ pattern: '*',
206
+ includeForks: false,
207
+ intervalSeconds: 86400,
208
+ enabled: true,
209
+ ...prefill,
210
+ };
211
+ set({
212
+ draft: options,
213
+ editing: rule?.id ?? null,
214
+ revision: rule?.revision ?? null,
215
+ stale: false,
216
+ error: null,
217
+ patternError: null,
218
+ });
219
+ remember();
220
+ };
221
+ return {
222
+ snapshot: () => state,
223
+ subscribe(fn) {
224
+ listeners.add(fn);
225
+ return () => {
226
+ listeners.delete(fn);
227
+ };
228
+ },
229
+ load,
230
+ dispose() {
231
+ generation++;
232
+ },
233
+ edit,
234
+ configure(patch) {
235
+ if (state.busy || state.reauthPending || !state.draft)
236
+ return;
237
+ set({ draft: { ...state.draft, ...patch }, patternError: null });
238
+ remember();
239
+ },
240
+ close() {
241
+ if (state.busy || state.reauthPending)
242
+ return;
243
+ set({ draft: null, editing: null, stale: false, error: null });
244
+ remember();
245
+ },
246
+ reviewLatest() {
247
+ const latest = state.items.find((r) => r.id === state.editing);
248
+ if (latest) {
249
+ set({ draft: null });
250
+ edit(latest);
251
+ }
252
+ else
253
+ set({ stale: false });
254
+ },
255
+ async save() {
256
+ if (!state.manager || !state.draft || state.stale || state.busy || state.reauthPending)
257
+ return;
258
+ const options = {
259
+ ...state.draft,
260
+ name: state.draft.name.trim(),
261
+ pattern: state.draft.pattern || '*',
262
+ };
263
+ if (!validDiscoveryPattern(options.pattern)) {
264
+ set({ patternError: PATTERN_ERROR });
265
+ return;
266
+ }
267
+ const prior = state.items.find((r) => r.id === state.editing);
268
+ const unchanged = prior &&
269
+ 'credentialId' in prior &&
270
+ prior.credentialId === options.credentialId &&
271
+ prior.installationId === options.installationId;
272
+ if (!Number.isInteger(options.intervalSeconds / 3600) ||
273
+ options.intervalSeconds < 3600 ||
274
+ options.intervalSeconds > 2592000) {
275
+ set({ error: 'Enter a whole number of hours from 1 to 720.' });
276
+ return;
277
+ }
278
+ if (!options.name ||
279
+ options.name.length > 80 ||
280
+ (!unchanged &&
281
+ !state.connections.some((c) => c.credentialId === options.credentialId &&
282
+ c.installationId === options.installationId))) {
283
+ set({
284
+ error: 'Enter a name of up to 80 characters and choose an available GitHub connection.',
285
+ });
286
+ return;
287
+ }
288
+ const body = { ...options };
289
+ if (prior &&
290
+ 'credentialId' in prior &&
291
+ prior.credentialId === options.credentialId &&
292
+ prior.installationId === options.installationId) {
293
+ delete body.credentialId;
294
+ delete body.installationId;
295
+ }
296
+ const ok = await mutate(() => state.editing === null
297
+ ? services.client.request('post', '/_pb/sources/discovery/rules', {
298
+ body: options,
299
+ idempotencyKey: crypto.randomUUID(),
300
+ })
301
+ : services.client.request('patch', '/_pb/sources/discovery/rules/{id}', {
302
+ params: { id: state.editing },
303
+ headers: { 'If-Match': revisionTag(state.revision) },
304
+ body,
305
+ }), 'Discovery rule saved.', prior ?? (state.editing ? { id: state.editing, name: options.name } : undefined), !prior ||
306
+ !unchanged ||
307
+ prior.ecosystem !== options.ecosystem ||
308
+ prior.pattern !== options.pattern ||
309
+ prior.includeForks !== options.includeForks
310
+ ? 'The scan restarts. Imported sources stay.'
311
+ : 'Save the settings. The scan keeps its progress.');
312
+ if (ok) {
313
+ set({ draft: null, editing: null });
314
+ remember();
315
+ }
316
+ },
317
+ run: (rule) => !rule.enabled
318
+ ? Promise.resolve(false)
319
+ : mutate(() => services.client.request('post', '/_pb/sources/discovery/rules/{id}/run', {
320
+ params: { id: rule.id },
321
+ body: {},
322
+ idempotencyKey: crypto.randomUUID(),
323
+ }), 'Scan requested. It will start on a scheduler tick when GitHub is available.', rule, 'Request a scan on the next scheduler tick.'),
324
+ toggle: (rule) => mutate(() => services.client.request('patch', '/_pb/sources/discovery/rules/{id}', {
325
+ params: { id: rule.id },
326
+ headers: { 'If-Match': revisionTag(rule.revision) },
327
+ body: { enabled: !rule.enabled },
328
+ }), 'Discovery rule updated.', rule, rule.enabled ? 'Scheduled scans stop.' : 'Scheduled scans resume.'),
329
+ remove: async (selected) => {
330
+ const rule = state.items.find((r) => r.id === selected.id);
331
+ if (!rule) {
332
+ await load(false, false);
333
+ set({ error: ruleFailure({ status: 404 }) });
334
+ return false;
335
+ }
336
+ return mutate(() => services.client.request('delete', '/_pb/sources/discovery/rules/{id}', {
337
+ params: { id: rule.id },
338
+ headers: { 'If-Match': revisionTag(rule.revision) },
339
+ }), 'Discovery rule deleted. Imported sources stay.', rule, 'Scheduled scans stop. Imported sources stay.');
340
+ },
341
+ async replayed(result) {
342
+ set({ reauthPending: false });
343
+ remember();
344
+ if (!result.ok && result.cancelled) {
345
+ set({
346
+ error: null,
347
+ notice: 'Discovery rule was not sent. Review the settings before trying again.',
348
+ });
349
+ return;
350
+ }
351
+ if (result.ok) {
352
+ set({ draft: null, editing: null });
353
+ remember();
354
+ }
355
+ const loading = load(false, false);
356
+ const replayGeneration = generation;
357
+ await loading;
358
+ if (replayGeneration !== generation)
359
+ return;
360
+ if (result.ok)
361
+ set({ notice: 'Discovery rule saved.' });
362
+ if (!result.ok) {
363
+ set({ error: ruleFailure(result), stale: result.status === 412 && state.draft !== null });
364
+ if (result.status === 412 && state.editing) {
365
+ const request = generation;
366
+ const editing = state.editing;
367
+ const latest = await services.client.request('get', '/_pb/sources/discovery/rules/{id}', {
368
+ params: { id: state.editing },
369
+ });
370
+ if (request !== generation || editing !== state.editing)
371
+ return;
372
+ if (latest.ok)
373
+ set({
374
+ items: state.items.some((r) => r.id === state.editing)
375
+ ? state.items.map((r) => (r.id === state.editing ? latest.data : r))
376
+ : [...state.items, latest.data],
377
+ });
378
+ }
379
+ }
380
+ },
381
+ };
382
+ }
383
+ //# sourceMappingURL=discovery-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery-rules.js","sourceRoot":"","sources":["../../../src/pages/sources/discovery-rules.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export type VcsProvider = operations['listOrganizationSources']['responses'][200
8
8
  export declare function vcsProviderOptions(reported: readonly string[]): readonly (readonly [VcsProvider, string])[];
9
9
  export declare const SOURCE_TYPES: {
10
10
  readonly composer: readonly ["packagist_proxy", "composer_repository", "vcs"];
11
- readonly npm: readonly ["npmjs_proxy", "npm_registry"];
11
+ readonly npm: readonly ["npmjs_proxy", "npm_registry", "hosted", "vcs"];
12
12
  };
13
13
  export declare const SOURCE_TYPE_LABELS: Record<CreateSource['type'], string>;
14
14
  export declare function sourceFieldErrors(details: ApiErrorDetail[]): Record<string, string>;
@@ -17,7 +17,8 @@ export declare function sourceSubmission(data: FormData, ecosystem: CreateSource
17
17
  export declare function sourceFormData(source: Source): FormData;
18
18
  export declare function scopeNamePatterns(scopes: string): string[];
19
19
  export declare function focusSourceError(form: HTMLFormElement | null, errors: Record<string, string>): void;
20
- export declare function SourceForm({ source, busy, errors: serverErrors, alert, onSubmit, onClose, vcsProviders, initialType, initialProvider, }: {
20
+ export declare function SourceForm({ source, busy, errors: serverErrors, alert, onSubmit, onClose, vcsProviders, initialType, initialProvider, organization, }: {
21
+ organization?: boolean;
21
22
  source: Source | null;
22
23
  initialType?: CreateSource['type'] | undefined;
23
24
  initialProvider?: VcsProvider | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"source-form.d.ts","sourceRoot":"","sources":["../../../src/pages/sources/source-form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAanD,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAGxD,MAAM,MAAM,YAAY,GACtB,UAAU,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACvF,MAAM,MAAM,aAAa,GACvB,UAAU,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACvF,MAAM,MAAM,WAAW,GACrB,UAAU,CAAC,yBAAyB,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAQjH,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAI7C;AACD,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAKX,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,CAOnE,CAAC;AAyFF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUnF;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAC1B,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,QAAQ,GAAE,QAAQ,GAAG,IAAiD,GACrE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkDxB;AAuFD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,EACpC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,WAAW,GAAE,QAAQ,GAAG,IAAiD,GACxE,YAAY,GAAG,aAAa,CAoB9B;AAWD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAoBvD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAS5F;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,IAAI,EACJ,MAAM,EAAE,YAAY,EACpB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,YAAoC,EACpC,WAAW,EACX,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/C,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,KAAK,IAAI,CAAC;IACvD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;CACnD,+BA8iBA"}
1
+ {"version":3,"file":"source-form.d.ts","sourceRoot":"","sources":["../../../src/pages/sources/source-form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAanD,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAGxD,MAAM,MAAM,YAAY,GACtB,UAAU,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACvF,MAAM,MAAM,aAAa,GACvB,UAAU,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACvF,MAAM,MAAM,WAAW,GACrB,UAAU,CAAC,yBAAyB,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAQjH,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAI7C;AACD,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAKX,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,CAOnE,CAAC;AA+FF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUnF;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAC1B,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,QAAQ,GAAE,QAAQ,GAAG,IAAiD,GACrE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkDxB;AAyFD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,EACpC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,WAAW,GAAE,QAAQ,GAAG,IAAiD,GACxE,YAAY,GAAG,aAAa,CAoB9B;AAWD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAoBvD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAS5F;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,IAAI,EACJ,MAAM,EAAE,YAAY,EACpB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,YAAoC,EACpC,WAAW,EACX,eAAe,EACf,YAAmB,GACpB,EAAE;IACD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/C,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,KAAK,IAAI,CAAC;IACvD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;CACnD,+BA6jBA"}
@@ -22,7 +22,7 @@ export function vcsProviderOptions(reported) {
22
22
  }
23
23
  export const SOURCE_TYPES = {
24
24
  composer: ['packagist_proxy', 'composer_repository', 'vcs'],
25
- npm: ['npmjs_proxy', 'npm_registry'],
25
+ npm: ['npmjs_proxy', 'npm_registry', 'hosted', 'vcs'],
26
26
  };
27
27
  const DEFAULT_URL = {
28
28
  packagist_proxy: 'https://repo.packagist.org',
@@ -39,11 +39,13 @@ export const SOURCE_TYPE_LABELS = {
39
39
  const TYPE_DESCRIPTIONS = {
40
40
  packagist_proxy: 'Fetch public Composer packages on demand.',
41
41
  composer_repository: 'Import selected packages from Satis, Private Packagist, or another Composer repository.',
42
- vcs: 'Import a Composer package from GitHub or another Git repository.',
42
+ vcs: 'Import a Composer or npm package from the root of a GitHub or Git repository.',
43
43
  npmjs_proxy: 'Fetch public npm packages on demand.',
44
44
  npm_registry: 'Fetch packages in selected scopes from another npm registry.',
45
+ hosted: 'Reserve private npm package names and publish packages to this broker.',
45
46
  };
46
47
  const FIELD_LABELS = {
48
+ requirePublishApproval: 'Require publish approval',
47
49
  name: 'Source name',
48
50
  ecosystem: 'Ecosystem',
49
51
  type: 'Source type',
@@ -57,7 +59,7 @@ const FIELD_LABELS = {
57
59
  'config/repository': 'GitHub repository',
58
60
  'config/installationId': 'GitHub App installation ID',
59
61
  githubAuthentication: 'GitHub authentication',
60
- 'config/packageName': 'Composer package name override',
62
+ 'config/packageName': 'Package name (optional)',
61
63
  'config/refs/branches': 'Branches to import',
62
64
  'config/refs/tags': 'Import tags',
63
65
  'config/selection/packages': 'Package names (one per line)',
@@ -69,6 +71,7 @@ const FIELD_LABELS = {
69
71
  'config/githubToken': 'Use GitHub token',
70
72
  };
71
73
  const FIELD_MESSAGES = {
74
+ requirePublishApproval: 'Choose whether new publishes require approval.',
72
75
  name: 'Enter a source name.',
73
76
  ecosystem: 'Choose an ecosystem.',
74
77
  type: 'Choose a source type.',
@@ -82,7 +85,7 @@ const FIELD_MESSAGES = {
82
85
  'config/repository': 'Enter a valid repository for the selected provider: owner/repository for GitHub, or a clone URL for Git.',
83
86
  'config/installationId': 'Enter a positive whole-number installation ID.',
84
87
  githubAuthentication: 'Choose GitHub App or Personal access token.',
85
- 'config/packageName': 'Enter a Composer package name, such as acme/payments.',
88
+ 'config/packageName': 'Enter a package name matching the source ecosystem.',
86
89
  'config/refs/branches': 'Enter valid branch names, one per line, without duplicates.',
87
90
  'config/refs/tags': 'Choose whether to import tags.',
88
91
  'config/selection/packages': 'Enter valid Composer package names, one per line, without duplicates.',
@@ -94,12 +97,13 @@ const FIELD_MESSAGES = {
94
97
  'config/githubToken': 'Save a bearer credential before enabling the GitHub token option.',
95
98
  };
96
99
  const HELP = {
100
+ requirePublishApproval: 'New versions wait for approval before installation. Versions already held remain held when this setting is turned off.',
97
101
  pollIntervalSeconds: 'How often to check for upstream changes. 300 seconds = 5 minutes.',
98
102
  retentionDaysOverride: 'Leave blank to use the organization setting. An override can only lengthen retention.',
99
103
  'config/distHosts': 'One hostname per line. Archive downloads may come from these hosts; the source credential is also sent to them.',
100
104
  'config/selection/packages': 'Packages matching either list are selected. Empty lists select no packages.',
101
105
  'config/scopes': 'One scope per line, including @. Only these scopes use this registry. Register @scope/* for each scope before enabling the source.',
102
- 'config/packageName': 'Leave blank to use the name in composer.json.',
106
+ 'config/packageName': 'Leave blank to use the root manifest name (composer.json or package.json). For npm, this must match the name in package.json.',
103
107
  'config/refs/branches': 'One branch name per line. Leave blank to import no branches.',
104
108
  'config/installationId': 'Enter the numeric installation ID for the account that owns this repository.',
105
109
  };
@@ -182,6 +186,8 @@ function sourceChanges(data, type, editing, includeConfig = true) {
182
186
  pollIntervalSeconds: integer(value('pollIntervalSeconds'), 1),
183
187
  removalPolicy: value('removalPolicy'),
184
188
  };
189
+ if (type === 'hosted')
190
+ changes.requirePublishApproval = checked('requirePublishApproval');
185
191
  changes.defaultVisibleToNewProjects = checked('defaultVisibleToNewProjects');
186
192
  changes.retentionDaysOverride =
187
193
  value('retentionDaysOverride').trim() === ''
@@ -226,6 +232,7 @@ function sourceChanges(data, type, editing, includeConfig = true) {
226
232
  case 'packagist_proxy':
227
233
  changes.config = { githubToken: editing && checked('config/githubToken') };
228
234
  break;
235
+ case 'hosted':
229
236
  case 'npmjs_proxy':
230
237
  changes.config = {};
231
238
  break;
@@ -295,8 +302,8 @@ export function focusSourceError(form, errors) {
295
302
  details.open = true;
296
303
  control.focus();
297
304
  }
298
- export function SourceForm({ source, busy, errors: serverErrors, alert, onSubmit, onClose, vcsProviders = DEFAULT_VCS_PROVIDERS, initialType, initialProvider, }) {
299
- const [ecosystem, setEcosystem] = useState(source?.ecosystem ?? 'composer');
305
+ export function SourceForm({ source, busy, errors: serverErrors, alert, onSubmit, onClose, vcsProviders = DEFAULT_VCS_PROVIDERS, initialType, initialProvider, organization = true, }) {
306
+ const [ecosystem, setEcosystem] = useState(source?.ecosystem ?? (initialType === 'hosted' ? 'npm' : 'composer'));
300
307
  const [type, setType] = useState(source?.type ?? initialType ?? 'packagist_proxy');
301
308
  const providerOptions = vcsProviderOptions(vcsProviders);
302
309
  const firstProvider = providerOptions[0]?.[0] ?? 'github';
@@ -399,14 +406,15 @@ export function SourceForm({ source, busy, errors: serverErrors, alert, onSubmit
399
406
  setScopes('');
400
407
  setLocalErrors({});
401
408
  }, true), radios('type', type, SOURCE_TYPES[ecosystem]
402
- .filter((value) => value !== 'vcs' || providerOptions.length > 0)
409
+ .filter((value) => (value !== 'vcs' || providerOptions.length > 0) &&
410
+ (value !== 'hosted' || organization))
403
411
  .map((value) => [value, SOURCE_TYPE_LABELS[value], TYPE_DESCRIPTIONS[value]]), (value) => {
404
412
  setType(value);
405
413
  setScopes('');
406
414
  setProvider(firstProvider);
407
415
  setGithubAuthentication('app');
408
416
  setLocalErrors({});
409
- }), input('name', { required: true, placeholder: namePlaceholder })] })) : (_jsx(_Fragment, { children: vcsUnserved ? (_jsx("p", { className: "text-sm", children: `Source type: ${SOURCE_TYPE_LABELS[type]}. This broker cannot change its repository settings.` })) : null })), proxy ? (_jsxs("p", { className: "break-words text-sm", children: ["Upstream URL: ", DEFAULT_URL[type]] })) : null, proxy ? (_jsx("input", { type: "hidden", name: "url", value: DEFAULT_URL[type] })) : null, !proxy && type !== 'vcs' ? (_jsx("div", { children: input('url', {
417
+ }), input('name', { required: true, placeholder: namePlaceholder })] })) : (_jsx(_Fragment, { children: vcsUnserved ? (_jsx("p", { className: "text-sm", children: `Source type: ${SOURCE_TYPE_LABELS[type]}. This broker cannot change its repository settings.` })) : null })), proxy ? (_jsxs("p", { className: "break-words text-sm", children: ["Upstream URL: ", DEFAULT_URL[type]] })) : null, proxy ? (_jsx("input", { type: "hidden", name: "url", value: DEFAULT_URL[type] })) : null, !proxy && type !== 'vcs' && type !== 'hosted' ? (_jsx("div", { children: input('url', {
410
418
  required: !editing || source.url !== null,
411
419
  value: source?.url ?? '',
412
420
  label: type === 'npm_registry' ? 'Registry URL' : 'Repository URL',
@@ -446,7 +454,7 @@ export function SourceForm({ source, busy, errors: serverErrors, alert, onSubmit
446
454
  })
447
455
  : null] })) : null] })) : null, type === 'composer_repository' ? (_jsxs(_Fragment, { children: [input('config/selection/packages', { multiline: true }), input('config/selection/patterns', { multiline: true })] })) : null, type === 'npm_registry' ? (_jsxs(_Fragment, { children: [input('config/scopes', { multiline: true }), !editing
448
456
  ? field('registeredPatterns', _jsx("textarea", { id: "source-registeredPatterns", name: "registeredPatterns", rows: 3, readOnly: true, value: scopeNamePatterns(scopes).join('\n') }), 'Names to register after adding this source')
449
- : null] })) : null] }, `primary:${type}`)) : null, !editing ? (_jsx("p", { className: "text-sm text-neutral-600", children: proxy
457
+ : null] })) : null] }, `primary:${type}`)) : null, type === 'hosted' ? (_jsx("p", { className: "text-sm text-neutral-600", children: "npm publishing is available. Register package names, then enable this source. A claim immediately stops the npmjs proxy from serving that name, even while this source is paused. Use an exact lowercase npm name or @scope/*. A scope claim hides public packages in that scope that are not yet cached." })) : null, !editing && type !== 'hosted' ? (_jsx("p", { className: "text-sm text-neutral-600", children: proxy
450
458
  ? 'No credentials are needed to add this proxy.'
451
459
  : type === 'vcs' && provider === 'github'
452
460
  ? githubAuthentication === 'app'
@@ -454,9 +462,11 @@ export function SourceForm({ source, busy, errors: serverErrors, alert, onSubmit
454
462
  : 'After adding this source, save your GitHub personal access token as a bearer credential.'
455
463
  : type === 'vcs' && provider === 'ssh'
456
464
  ? 'After adding this source, save an SSH private key and known hosts.'
457
- : 'After adding this source, save its credentials to finish setup.' })) : null, _jsxs("details", { className: "min-w-0", children: [_jsx("summary", { className: "min-h-11 cursor-pointer py-3 text-sm font-medium", children: "Advanced settings" }), _jsxs("div", { className: "grid gap-4 pt-2", children: [_jsx("p", { className: "text-sm text-neutral-600", children: "Optional sync, visibility, retention, and connection settings." }), configEnabled ? (_jsxs("div", { className: "grid gap-4", children: [type === 'composer_repository' || type === 'npm_registry'
465
+ : 'After adding this source, save its credentials to finish setup.' })) : null, type === 'hosted' && ecosystem === 'npm' ? check('requirePublishApproval') : null, _jsxs("details", { className: "min-w-0", children: [_jsx("summary", { className: "min-h-11 cursor-pointer py-3 text-sm font-medium", children: "Advanced settings" }), _jsxs("div", { className: "grid gap-4 pt-2", children: [_jsx("p", { className: "text-sm text-neutral-600", children: "Optional sync, visibility, retention, and connection settings." }), configEnabled ? (_jsxs("div", { className: "grid gap-4", children: [type === 'composer_repository' || type === 'npm_registry'
458
466
  ? input('config/distHosts', { multiline: true })
459
- : null, type === 'composer_repository' ? (_jsxs(_Fragment, { children: [check('config/mirrorsFallback'), editing ? check('config/selection/expandPatterns') : null] })) : null, type === 'vcs' ? (_jsxs(_Fragment, { children: [input('config/packageName'), input('config/refs/branches', { multiline: true }), check('config/refs/tags', undefined, undefined, true)] })) : null, type === 'packagist_proxy' && editing ? check('config/githubToken') : null] }, `advanced:${type}`)) : null, type === 'packagist_proxy' && editing ? (_jsx("p", { className: "text-sm text-neutral-600", children: "To enable Use GitHub token, save a bearer credential with your GitHub token, then select Use GitHub token and save the source." })) : null, input('pollIntervalSeconds', {
467
+ : null, type === 'composer_repository' ? (_jsxs(_Fragment, { children: [check('config/mirrorsFallback'), editing ? check('config/selection/expandPatterns') : null] })) : null, type === 'vcs' ? (_jsxs(_Fragment, { children: [input('config/packageName', {
468
+ placeholder: ecosystem === 'npm' ? '@acme/payments' : 'acme/payments',
469
+ }), input('config/refs/branches', { multiline: true }), check('config/refs/tags', undefined, undefined, true)] })) : null, type === 'packagist_proxy' && editing ? check('config/githubToken') : null] }, `advanced:${type}`)) : null, type === 'packagist_proxy' && editing ? (_jsx("p", { className: "text-sm text-neutral-600", children: "To enable Use GitHub token, save a bearer credential with your GitHub token, then select Use GitHub token and save the source." })) : null, input('pollIntervalSeconds', {
460
470
  number: true,
461
471
  minimum: 1,
462
472
  value: source?.pollIntervalSeconds ?? 300,