@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,202 @@
1
+ const empty = () => ({
2
+ packageName: '',
3
+ repository: '',
4
+ workflow: '',
5
+ environment: '',
6
+ refPattern: '',
7
+ });
8
+ export function createTrustedPublishersController(services) {
9
+ let state = {
10
+ items: [],
11
+ next: null,
12
+ hasPrevious: false,
13
+ draft: empty(),
14
+ editing: null,
15
+ loading: false,
16
+ loadError: false,
17
+ busy: false,
18
+ stale: false,
19
+ editDisabled: false,
20
+ notice: null,
21
+ };
22
+ let epoch = 0;
23
+ let cursors = [undefined];
24
+ const listeners = new Set();
25
+ const set = (next) => {
26
+ state = { ...state, ...next };
27
+ for (const listener of listeners)
28
+ listener();
29
+ };
30
+ const failure = (result) => {
31
+ const conflict = result.code === 'conflict' || result.status === 412 || result.status === 428;
32
+ set({
33
+ stale: conflict,
34
+ notice: conflict
35
+ ? 'This publisher changed. Reload the latest settings and review your draft before saving.'
36
+ : result.code === 'github_credentials_required'
37
+ ? 'Configure a GitHub source for this repository with a GitHub App installation or token first.'
38
+ : result.code === 'ambiguous_trusted_publisher'
39
+ ? 'A publisher already uses this package, repository, workflow and environment.'
40
+ : result.code === 'name_not_claimed'
41
+ ? 'Claim this package on an active hosted npm source first.'
42
+ : 'The publisher could not be saved. Check your settings and try again.',
43
+ });
44
+ };
45
+ const controller = {
46
+ snapshot: () => state,
47
+ subscribe(listener) {
48
+ listeners.add(listener);
49
+ return () => {
50
+ listeners.delete(listener);
51
+ };
52
+ },
53
+ draft(draft) {
54
+ set({ draft });
55
+ },
56
+ edit(item) {
57
+ set({
58
+ draft: {
59
+ packageName: item.packageName,
60
+ repository: item.repository,
61
+ workflow: item.workflow,
62
+ environment: item.environment,
63
+ refPattern: item.refPattern ?? '',
64
+ },
65
+ editing: { id: item.id, revision: item.revision },
66
+ notice: null,
67
+ editDisabled: false,
68
+ });
69
+ },
70
+ cancel() {
71
+ set({ draft: empty(), editing: null, notice: null, editDisabled: false });
72
+ },
73
+ clear() {
74
+ epoch++;
75
+ cursors = [undefined];
76
+ set({
77
+ draft: empty(),
78
+ editing: null,
79
+ items: [],
80
+ next: null,
81
+ hasPrevious: false,
82
+ notice: null,
83
+ busy: false,
84
+ loading: false,
85
+ stale: false,
86
+ editDisabled: false,
87
+ loadError: false,
88
+ });
89
+ },
90
+ async load() {
91
+ if (state.busy)
92
+ return;
93
+ const version = ++epoch;
94
+ set({ loading: true, loadError: false });
95
+ const cursor = cursors[cursors.length - 1];
96
+ const result = await services.client.request('get', '/_pb/trusted-publishers', {
97
+ query: cursor === undefined ? {} : { cursor },
98
+ });
99
+ if (version !== epoch)
100
+ return;
101
+ if (!result.ok) {
102
+ set({ loading: false, loadError: true });
103
+ return;
104
+ }
105
+ let editing = state.editing;
106
+ let editDisabled = false;
107
+ if (editing !== null) {
108
+ const current = result.data.items.find((item) => item.id === editing.id && item.disabledAt === null);
109
+ editDisabled = current === undefined;
110
+ if (current !== undefined)
111
+ editing = { id: current.id, revision: current.revision };
112
+ }
113
+ set({
114
+ items: result.data.items,
115
+ next: result.data.next ?? null,
116
+ hasPrevious: cursors.length > 1,
117
+ loading: false,
118
+ stale: false,
119
+ editing,
120
+ editDisabled,
121
+ notice: editDisabled
122
+ ? 'This publisher was disabled or is no longer available. Cancel this edit to create a new publisher.'
123
+ : state.stale
124
+ ? 'Latest settings loaded. Review your draft before saving again.'
125
+ : state.notice,
126
+ });
127
+ },
128
+ async nextPage() {
129
+ if (state.busy ||
130
+ state.loading ||
131
+ state.stale ||
132
+ state.loadError ||
133
+ state.editing !== null ||
134
+ state.next === null)
135
+ return;
136
+ cursors.push(state.next);
137
+ await controller.load();
138
+ },
139
+ async previousPage() {
140
+ if (state.busy ||
141
+ state.loading ||
142
+ state.stale ||
143
+ state.loadError ||
144
+ state.editing !== null ||
145
+ cursors.length < 2)
146
+ return;
147
+ cursors.pop();
148
+ await controller.load();
149
+ },
150
+ async save() {
151
+ if (state.busy || state.loading || state.stale || state.loadError || state.editDisabled)
152
+ return;
153
+ const version = epoch;
154
+ set({ busy: true, notice: null });
155
+ const { draft, editing } = state;
156
+ const body = {
157
+ packageName: draft.packageName,
158
+ repository: draft.repository,
159
+ workflow: draft.workflow,
160
+ environment: draft.environment,
161
+ ...(draft.refPattern === '' ? {} : { refPattern: draft.refPattern }),
162
+ };
163
+ const result = editing === null
164
+ ? await services.client.request('post', '/_pb/trusted-publishers', { body })
165
+ : await services.client.request('put', '/_pb/trusted-publishers/{id}', {
166
+ params: { id: editing.id },
167
+ headers: { 'If-Match': `"r${editing.revision}"` },
168
+ body,
169
+ });
170
+ if (version !== epoch)
171
+ return;
172
+ set({ busy: false });
173
+ if (!result.ok) {
174
+ failure(result);
175
+ return;
176
+ }
177
+ set({ draft: empty(), editing: null, notice: 'Trusted publisher saved.' });
178
+ await controller.load();
179
+ },
180
+ async disable(item) {
181
+ if (state.busy || state.loading || state.stale || state.loadError)
182
+ return;
183
+ const version = epoch;
184
+ set({ busy: true, notice: null });
185
+ const result = await services.client.request('delete', '/_pb/trusted-publishers/{id}', {
186
+ params: { id: item.id },
187
+ headers: { 'If-Match': `"r${item.revision}"` },
188
+ });
189
+ if (version !== epoch)
190
+ return;
191
+ set({ busy: false });
192
+ if (!result.ok) {
193
+ failure(result);
194
+ return;
195
+ }
196
+ set({ notice: 'Publisher disabled. Its workload tokens have been revoked.' });
197
+ await controller.load();
198
+ },
199
+ };
200
+ return controller;
201
+ }
202
+ //# sourceMappingURL=trusted-publishers-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trusted-publishers-controller.js","sourceRoot":"","sources":["../../../src/pages/tokens/trusted-publishers-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Controller } from './trusted-publishers-controller.js';
2
+ export declare function TrustedPublishers({ controller, permissions, }: {
3
+ controller: Controller;
4
+ permissions: readonly string[];
5
+ }): import("react").JSX.Element | null;
6
+ //# sourceMappingURL=trusted-publishers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trusted-publishers.d.ts","sourceRoot":"","sources":["../../../src/pages/tokens/trusted-publishers.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AASrE,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,WAAW,GACZ,EAAE;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,sCAuRA"}
@@ -0,0 +1,116 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { MAX_NPM_NAME_LENGTH } from '../../package-limits.js';
3
+ import { useEffect, useRef, useState, useSyncExternalStore } from 'react';
4
+ import { Button } from '../../components/ui/button.js';
5
+ import { Input } from '../../components/ui/input.js';
6
+ import { Label } from '../../components/ui/label.js';
7
+ import { DataTable } from '../../components/ui/table.js';
8
+ import { ConfirmAction } from '../../components/ui/confirm-action.js';
9
+ import { ListState } from '../../components/ui/list-state.js';
10
+ import { Time } from '../../components/ui/time.js';
11
+ const subscribeLocation = (listener) => {
12
+ window.addEventListener('hashchange', listener);
13
+ return () => window.removeEventListener('hashchange', listener);
14
+ };
15
+ const locationSnapshot = () => window.location.hash;
16
+ const serverLocationSnapshot = () => '';
17
+ export function TrustedPublishers({ controller, permissions, }) {
18
+ const state = useSyncExternalStore(controller.subscribe, controller.snapshot, controller.snapshot);
19
+ const hash = useSyncExternalStore(subscribeLocation, locationSnapshot, serverLocationSnapshot);
20
+ const targeted = new URLSearchParams(hash.split('?')[1] ?? '').get('section') === 'trusted-publishers';
21
+ const [expanded, setExpanded] = useState(targeted || state.editing !== null);
22
+ const [creating, setCreating] = useState(false);
23
+ const [returnFocus, setReturnFocus] = useState(false);
24
+ const addButton = useRef(null);
25
+ const opener = useRef(null);
26
+ const formOpen = creating || state.editing !== null;
27
+ const blocked = state.busy || state.loading || state.stale || state.loadError;
28
+ useEffect(() => {
29
+ if (targeted || state.editing !== null)
30
+ setExpanded(true);
31
+ }, [targeted, state.editing]);
32
+ useEffect(() => {
33
+ if (expanded && formOpen)
34
+ document.getElementById('publisher-packageName')?.focus();
35
+ }, [expanded, formOpen, state.editing?.id]);
36
+ useEffect(() => {
37
+ if (!returnFocus || formOpen || blocked)
38
+ return;
39
+ const target = opener.current?.isConnected ? opener.current : addButton.current;
40
+ target?.focus();
41
+ setReturnFocus(false);
42
+ }, [returnFocus, formOpen, blocked]);
43
+ const allowed = permissions.includes('org:service-principals:write');
44
+ const canWrite = allowed && permissions.includes('org:packages:publish');
45
+ useEffect(() => {
46
+ if (allowed)
47
+ void controller.load();
48
+ return () => controller.clear();
49
+ }, [controller, allowed]);
50
+ if (!allowed)
51
+ return null;
52
+ const submit = (event) => {
53
+ event.preventDefault();
54
+ void controller.save().then(() => {
55
+ if (controller.snapshot().notice !== 'Trusted publisher saved.')
56
+ return;
57
+ setCreating(false);
58
+ setReturnFocus(true);
59
+ });
60
+ };
61
+ return (_jsxs("details", { id: "trusted-publishers", className: "detail-group space-y-4", open: expanded, onToggle: (event) => setExpanded(event.currentTarget.open), children: [_jsx("summary", { className: "min-h-11 cursor-pointer font-semibold", children: "Trusted publishers" }), _jsx("p", { children: "Organization \u00B7 Let a GitHub Actions workflow publish one claimed npm package using short-lived credentials." }), _jsx("p", { children: "Configure an organization GitHub source for the repository with a GitHub App installation or token so its numeric identity can be verified." }), state.notice === null ? null : _jsx("p", { role: "status", children: state.notice }), canWrite && !formOpen ? (_jsx(Button, { ref: addButton, type: "button", className: "min-h-11", disabled: blocked, onClick: (event) => {
62
+ opener.current = event.currentTarget;
63
+ setCreating(true);
64
+ }, children: "Add trusted publisher" })) : null, _jsx(Button, { type: "button", variant: "outline", className: "min-h-11", disabled: state.busy || state.loading, onClick: () => void controller.load(), children: "Reload trusted publishers" }), state.loading ? (_jsx(ListState, { kind: "loading", title: "Loading trusted publishers\u2026" })) : state.loadError ? (_jsx(ListState, { kind: "error", title: "Trusted publishers could not be loaded." })) : state.items.length === 0 ? (_jsx(ListState, { kind: "empty", title: state.hasPrevious ? 'No trusted publishers on this page.' : 'No trusted publishers yet.' })) : (_jsx(DataTable, { label: "Organization trusted publishers", items: state.items, columns: [
65
+ {
66
+ key: 'package',
67
+ label: 'Package',
68
+ value: (item) => item.packageName,
69
+ render: (item) => _jsx("strong", { className: "break-all", children: item.packageName }),
70
+ },
71
+ {
72
+ key: 'workflow',
73
+ label: 'GitHub workflow',
74
+ value: (item) => item.repository,
75
+ render: (item) => (_jsxs("div", { className: "break-all", children: [_jsx("p", { children: item.repository }), _jsx("p", { children: item.workflow })] })),
76
+ },
77
+ {
78
+ key: 'binding',
79
+ label: 'Conditions',
80
+ value: (item) => item.environment,
81
+ render: (item) => (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Environment: ", item.environment || 'No environment'] }), _jsxs("p", { children: ["Ref: ", item.refPattern ?? 'Any ref'] }), _jsx("p", { children: item.disabledAt === null ? 'Enabled' : 'Disabled' })] })),
82
+ },
83
+ {
84
+ key: 'used',
85
+ label: 'Last used',
86
+ value: (item) => item.lastUsedAt ?? '',
87
+ render: (item) => item.lastUsedAt === null ? 'Never used' : _jsx(Time, { value: item.lastUsedAt }),
88
+ },
89
+ {
90
+ key: 'actions',
91
+ label: 'Actions',
92
+ value: () => '',
93
+ sortable: false,
94
+ render: (item) => !canWrite || item.disabledAt !== null ? null : (_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { type: "button", className: "min-h-11", variant: "outline", disabled: blocked, onClick: (event) => {
95
+ opener.current = event.currentTarget;
96
+ setCreating(false);
97
+ controller.edit(item);
98
+ }, children: "Edit publisher" }), _jsx(ConfirmAction, { action: "Disable publisher", target: `${item.packageName}: ${item.repository} / ${item.workflow}`, scope: "Organization", description: "This workflow will no longer be able to publish through this binding. Its workload tokens will be revoked immediately. The binding remains in the history and cannot be recreated.", disabled: blocked, onConfirm: () => void controller.disable(item) })] })),
99
+ },
100
+ ] })), _jsxs("p", { children: [state.items.length, " trusted publishers on this page"] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { type: "button", className: "min-h-11", variant: "outline", disabled: blocked || formOpen || !state.hasPrevious, onClick: () => void controller.previousPage(), children: "Previous publishers" }), _jsx(Button, { type: "button", className: "min-h-11", variant: "outline", disabled: blocked || formOpen || state.next === null, onClick: () => void controller.nextPage(), children: "Next publishers" })] }), !canWrite ? (_jsx("p", { children: "Publishing and service identity management permissions are both required to manage publishers." })) : !formOpen ? null : (_jsxs("form", { onSubmit: submit, className: "grid max-w-5xl items-start gap-x-6 gap-y-4 lg:grid-cols-2", "aria-label": state.editing === null ? 'New trusted publisher' : 'Edit trusted publisher', children: [_jsx("h3", { className: "lg:col-span-2 font-semibold", children: state.editing === null ? 'New trusted publisher' : 'Edit trusted publisher' }), [
101
+ ['packageName', 'npm package', true],
102
+ ['repository', 'GitHub repository (owner/name)', true],
103
+ ['workflow', 'Workflow filename', true],
104
+ ['environment', 'Environment (optional)', false],
105
+ ['refPattern', 'Ref pattern (optional)', false],
106
+ ].map(([key, label, required]) => (_jsxs("div", { children: [_jsx(Label, { htmlFor: `publisher-${key}`, children: label }), _jsx(Input, { id: `publisher-${key}`, value: state.draft[key], required: required, maxLength: key === 'packageName' ? MAX_NPM_NAME_LENGTH : key === 'repository' ? 140 : 255, disabled: state.busy, "aria-describedby": key === 'refPattern'
107
+ ? 'publisher-ref-help'
108
+ : key === 'environment'
109
+ ? 'publisher-environment-help'
110
+ : undefined, onChange: (event) => controller.draft({ ...state.draft, [key]: event.target.value }) }), key === 'refPattern' ? (_jsx("p", { id: "publisher-ref-help", children: "Use a full ref such as refs/tags/v*. * crosses /, ? matches one character, and matching is case-sensitive. Leave blank to allow any ref." })) : key === 'environment' ? (_jsx("p", { id: "publisher-environment-help", children: "ASCII letters are matched without case. Leave blank for a workflow job without an environment. A named environment must match." })) : null] }, key))), _jsx("p", { className: "lg:col-span-2", children: "Saving creates or updates an organization service identity with permission to publish this package. Workflow identity is verified against GitHub's numeric repository and owner IDs." }), _jsxs("div", { className: "lg:col-span-2 flex flex-wrap gap-2", children: [_jsx(Button, { type: "submit", className: "min-h-11 w-full sm:w-auto", disabled: blocked || state.editDisabled, children: state.busy ? 'Saving publisher…' : 'Save trusted publisher' }), _jsx(Button, { type: "button", className: "min-h-11", variant: "outline", disabled: state.busy, onClick: () => {
111
+ controller.cancel();
112
+ setCreating(false);
113
+ setReturnFocus(true);
114
+ }, children: state.editing === null ? 'Cancel' : 'Cancel edit' })] })] }))] }));
115
+ }
116
+ //# sourceMappingURL=trusted-publishers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trusted-publishers.js","sourceRoot":"","sources":["../../../src/pages/tokens/trusted-publishers.tsx"],"names":[],"mappings":"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"}
@@ -87,6 +87,59 @@ export declare function tokensReducer(state: State, action: {
87
87
  export declare function inResultScope(result: Issue | null, project: IssueProject): boolean;
88
88
  export declare function hasSetupAccess(state: State, project: IssueProject): boolean;
89
89
  export declare function createTokensController(services: ShellServices, deps: Deps): {
90
+ trustedPublishers: {
91
+ snapshot: () => import("./tokens/trusted-publishers-controller.js").State;
92
+ subscribe(listener: () => void): () => void;
93
+ draft(draft: {
94
+ packageName: string;
95
+ repository: string;
96
+ workflow: string;
97
+ environment: string;
98
+ refPattern: string;
99
+ }): void;
100
+ edit(item: Pick<{
101
+ createdAt: string;
102
+ createdByName: string;
103
+ createdByUserId: string;
104
+ disabledAt: string | null;
105
+ environment: string;
106
+ id: string;
107
+ lastUsedAt: string | null;
108
+ packageName: string;
109
+ refPattern: string | null;
110
+ repository: string;
111
+ repositoryId: string;
112
+ repositoryOwnerId: string;
113
+ revision: number;
114
+ servicePrincipalId: string;
115
+ servicePrincipalName: string;
116
+ workflow: string;
117
+ }, "id" | "revision" | "packageName" | "repository" | "workflow" | "environment" | "refPattern">): void;
118
+ cancel(): void;
119
+ clear(): void;
120
+ load(): Promise<void>;
121
+ nextPage(): Promise<void>;
122
+ previousPage(): Promise<void>;
123
+ save(): Promise<void>;
124
+ disable(item: Pick<{
125
+ createdAt: string;
126
+ createdByName: string;
127
+ createdByUserId: string;
128
+ disabledAt: string | null;
129
+ environment: string;
130
+ id: string;
131
+ lastUsedAt: string | null;
132
+ packageName: string;
133
+ refPattern: string | null;
134
+ repository: string;
135
+ repositoryId: string;
136
+ repositoryOwnerId: string;
137
+ revision: number;
138
+ servicePrincipalId: string;
139
+ servicePrincipalName: string;
140
+ workflow: string;
141
+ }, "id" | "revision">): Promise<void>;
142
+ };
90
143
  snapshot: () => State;
91
144
  announce(notice: string): void;
92
145
  subscribe(listener: () => void): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/pages/tokens.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/pages/tokens.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { createTrustedPublishersController } from './tokens/trusted-publishers-controller.js';
3
+ import { TrustedPublishers } from './tokens/trusted-publishers.js';
2
4
  import { pendingStorage } from '../token-pending.js';
3
5
  import { useEffect, useMemo, useState, useSyncExternalStore } from 'react';
4
6
  import { useServices } from '../auth.js';
@@ -274,6 +276,7 @@ export function createTokensController(services, deps) {
274
276
  failure(result);
275
277
  }
276
278
  const controller = {
279
+ trustedPublishers: createTrustedPublishersController(services),
277
280
  snapshot: () => state,
278
281
  announce(notice) {
279
282
  set({ notice });
@@ -285,6 +288,7 @@ export function createTokensController(services, deps) {
285
288
  };
286
289
  },
287
290
  navigate() {
291
+ controller.trustedPublishers.clear();
288
292
  epoch++;
289
293
  navigation++;
290
294
  listing++;
@@ -874,7 +878,7 @@ export function TokensView({ state: s, controller: c }) {
874
878
  .filter((p) => p.projectId === projectId)
875
879
  .map((p) => (_jsx("option", { value: p.id, children: p.name }, p.id)))] }), s.principalsRestricted ? (_jsx("p", { children: "Ask an organization administrator to create a service identity for this project." })) : null] })), renewal?.kind !== 'svc' ? null : (_jsxs(_Fragment, { children: [_jsx(Label, { htmlFor: "token-overlap", children: "Overlap" }), _jsxs(Select, { id: "token-overlap", name: "overlap", defaultValue: "0", children: [_jsx("option", { value: "0", children: "None" }), _jsx("option", { value: "1", children: "1 day" }), _jsx("option", { value: "7", children: "7 days" })] }), _jsx("p", { children: "The old token stops at the end of the overlap or when the new token expires, whichever is first." })] })), _jsx(Button, { type: "submit", disabled: s.busy || s.loading || policy === undefined, children: renewal === null ? 'Issue token' : 'Renew token' }), renewal === null ? null : (_jsx(Button, { type: "button", variant: "outline", disabled: s.busy, onClick: () => c.closeSecret(), children: "Cancel renewal" }))] }, `${s.target}:${renewal?.id ?? ''}:${policy?.defaultDays}`)] }, `${s.target}:${renewal?.id ?? ''}`)), _jsx(Label, { htmlFor: "token-list", children: "Token list" }), _jsxs(Select, { id: "token-list", value: s.target, disabled: s.busy, onChange: (e) => {
876
880
  void c.selectTarget(e.target.value, s.project);
877
- }, children: [_jsx("option", { value: "personal", children: "My personal tokens" }), s.project === null ? null : _jsx("option", { value: "project", children: "Project tokens" }), _jsx("option", { value: "organization", children: "Organization tokens" })] }), _jsxs("details", { className: "detail-group", children: [_jsx("summary", { children: "How token access works" }), _jsx("p", { children: "Personal tokens use your access and stop working if you leave or your account is suspended. Service tokens use a service identity and keep working when their creator leaves. Each project's access policy can limit a token further." })] }), _jsx(TokenList, { state: s, controller: c }, `${s.target}:${s.project}`), _jsxs("details", { className: "detail-group", children: [_jsx("summary", { className: "min-h-11 cursor-pointer font-semibold", children: "Service principals" }), _jsx(PrincipalForm, { state: s, controller: c }), _jsx(Button, { type: "button", variant: "outline", disabled: s.busy, onClick: () => void c.loadPrincipals(), children: "Reload service principals" }), s.principalsRestricted ? (_jsx(ListState, { kind: "placeholder", title: "You cannot browse service principals here." })) : s.principalsLoading ? (_jsx(ListState, { kind: "loading", title: "Loading service principals\u2026" })) : s.principals.length === 0 ? (_jsx(ListState, { kind: "empty", title: "No service principals loaded." })) : (_jsx(DataTable, { label: "Service principals", items: s.principals, columns: [
881
+ }, children: [_jsx("option", { value: "personal", children: "My personal tokens" }), s.project === null ? null : _jsx("option", { value: "project", children: "Project tokens" }), _jsx("option", { value: "organization", children: "Organization tokens" })] }), _jsxs("details", { className: "detail-group", children: [_jsx("summary", { children: "How token access works" }), _jsx("p", { children: "Personal tokens use your access and stop working if you leave or your account is suspended. Service tokens use a service identity and keep working when their creator leaves. Each project's access policy can limit a token further." })] }), _jsx(TokenList, { state: s, controller: c }, `${s.target}:${s.project}`), s.project === null && s.organizationPermissions.includes('org:service-principals:write') ? (_jsx(TrustedPublishers, { controller: c.trustedPublishers, permissions: s.organizationPermissions })) : null, _jsxs("details", { className: "detail-group", children: [_jsx("summary", { className: "min-h-11 cursor-pointer font-semibold", children: "Service principals" }), _jsx(PrincipalForm, { state: s, controller: c }), _jsx(Button, { type: "button", variant: "outline", disabled: s.busy, onClick: () => void c.loadPrincipals(), children: "Reload service principals" }), s.principalsRestricted ? (_jsx(ListState, { kind: "placeholder", title: "You cannot browse service principals here." })) : s.principalsLoading ? (_jsx(ListState, { kind: "loading", title: "Loading service principals\u2026" })) : s.principals.length === 0 ? (_jsx(ListState, { kind: "empty", title: "No service principals loaded." })) : (_jsx(DataTable, { label: "Service principals", items: s.principals, columns: [
878
882
  {
879
883
  key: 'name',
880
884
  label: 'Name',
@@ -906,8 +910,11 @@ export function bindTokensLifecycle(controller, events, onNavigate) {
906
910
  const clear = () => controller.navigate();
907
911
  const show = (event) => {
908
912
  clear();
909
- if (event.persisted === true)
913
+ if (event.persisted === true) {
910
914
  onNavigate();
915
+ if (controller.snapshot().organizationPermissions.includes('org:service-principals:write'))
916
+ void controller.trustedPublishers.load();
917
+ }
911
918
  };
912
919
  events.addEventListener('hashchange', change);
913
920
  events.addEventListener('pagehide', clear);