@package-broker/ui 0.19.7 → 2.0.0-rc.1

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 (207) hide show
  1. package/LICENSE +661 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/api-types.d.ts +9987 -0
  4. package/dist/api-types.d.ts.map +1 -0
  5. package/dist/api-types.js +6 -0
  6. package/dist/api-types.js.map +1 -0
  7. package/dist/api.d.ts +88 -0
  8. package/dist/api.d.ts.map +1 -0
  9. package/dist/api.js +179 -0
  10. package/dist/api.js.map +1 -0
  11. package/dist/app.d.ts +76 -0
  12. package/dist/app.d.ts.map +1 -0
  13. package/dist/app.js +239 -0
  14. package/dist/app.js.map +1 -0
  15. package/dist/assets/app.0348e5888f99.js +15 -0
  16. package/dist/assets/app.e8cea8b32d3a.css +2 -0
  17. package/dist/assets/index.html +13 -0
  18. package/dist/assets/manifest.json +26 -0
  19. package/dist/assets/setup.98343039898f.js +1 -0
  20. package/dist/assets/setup.html +14 -0
  21. package/dist/auth.d.ts +170 -0
  22. package/dist/auth.d.ts.map +1 -0
  23. package/dist/auth.js +551 -0
  24. package/dist/auth.js.map +1 -0
  25. package/dist/components/ui/alert.d.ts +10 -0
  26. package/dist/components/ui/alert.d.ts.map +1 -0
  27. package/dist/components/ui/alert.js +22 -0
  28. package/dist/components/ui/alert.js.map +1 -0
  29. package/dist/components/ui/badge.d.ts +8 -0
  30. package/dist/components/ui/badge.d.ts.map +1 -0
  31. package/dist/components/ui/badge.js +18 -0
  32. package/dist/components/ui/badge.js.map +1 -0
  33. package/dist/components/ui/button.d.ts +13 -0
  34. package/dist/components/ui/button.d.ts.map +1 -0
  35. package/dist/components/ui/button.js +27 -0
  36. package/dist/components/ui/button.js.map +1 -0
  37. package/dist/components/ui/card.d.ts +10 -0
  38. package/dist/components/ui/card.d.ts.map +1 -0
  39. package/dist/components/ui/card.js +21 -0
  40. package/dist/components/ui/card.js.map +1 -0
  41. package/dist/components/ui/confirm-action.d.ts +12 -0
  42. package/dist/components/ui/confirm-action.d.ts.map +1 -0
  43. package/dist/components/ui/confirm-action.js +19 -0
  44. package/dist/components/ui/confirm-action.js.map +1 -0
  45. package/dist/components/ui/dialog.d.ts +17 -0
  46. package/dist/components/ui/dialog.d.ts.map +1 -0
  47. package/dist/components/ui/dialog.js +180 -0
  48. package/dist/components/ui/dialog.js.map +1 -0
  49. package/dist/components/ui/dropdown-menu.d.ts +8 -0
  50. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  51. package/dist/components/ui/dropdown-menu.js +71 -0
  52. package/dist/components/ui/dropdown-menu.js.map +1 -0
  53. package/dist/components/ui/id-text.d.ts +11 -0
  54. package/dist/components/ui/id-text.d.ts.map +1 -0
  55. package/dist/components/ui/id-text.js +23 -0
  56. package/dist/components/ui/id-text.js.map +1 -0
  57. package/dist/components/ui/input.d.ts +5 -0
  58. package/dist/components/ui/input.d.ts.map +1 -0
  59. package/dist/components/ui/input.js +6 -0
  60. package/dist/components/ui/input.js.map +1 -0
  61. package/dist/components/ui/label.d.ts +4 -0
  62. package/dist/components/ui/label.d.ts.map +1 -0
  63. package/dist/components/ui/label.js +7 -0
  64. package/dist/components/ui/label.js.map +1 -0
  65. package/dist/components/ui/list-state.d.ts +7 -0
  66. package/dist/components/ui/list-state.d.ts.map +1 -0
  67. package/dist/components/ui/list-state.js +5 -0
  68. package/dist/components/ui/list-state.js.map +1 -0
  69. package/dist/components/ui/overlay-host.d.ts +6 -0
  70. package/dist/components/ui/overlay-host.d.ts.map +1 -0
  71. package/dist/components/ui/overlay-host.js +36 -0
  72. package/dist/components/ui/overlay-host.js.map +1 -0
  73. package/dist/components/ui/row-actions.d.ts +17 -0
  74. package/dist/components/ui/row-actions.d.ts.map +1 -0
  75. package/dist/components/ui/row-actions.js +21 -0
  76. package/dist/components/ui/row-actions.js.map +1 -0
  77. package/dist/components/ui/select.d.ts +3 -0
  78. package/dist/components/ui/select.d.ts.map +1 -0
  79. package/dist/components/ui/select.js +6 -0
  80. package/dist/components/ui/select.js.map +1 -0
  81. package/dist/components/ui/status-badge.d.ts +28 -0
  82. package/dist/components/ui/status-badge.d.ts.map +1 -0
  83. package/dist/components/ui/status-badge.js +50 -0
  84. package/dist/components/ui/status-badge.js.map +1 -0
  85. package/dist/components/ui/table.d.ts +27 -0
  86. package/dist/components/ui/table.d.ts.map +1 -0
  87. package/dist/components/ui/table.js +81 -0
  88. package/dist/components/ui/table.js.map +1 -0
  89. package/dist/components/ui/tabs.d.ts +7 -0
  90. package/dist/components/ui/tabs.d.ts.map +1 -0
  91. package/dist/components/ui/tabs.js +14 -0
  92. package/dist/components/ui/tabs.js.map +1 -0
  93. package/dist/components/ui/textarea.d.ts +3 -0
  94. package/dist/components/ui/textarea.d.ts.map +1 -0
  95. package/dist/components/ui/textarea.js +14 -0
  96. package/dist/components/ui/textarea.js.map +1 -0
  97. package/dist/components/ui/time.d.ts +5 -0
  98. package/dist/components/ui/time.d.ts.map +1 -0
  99. package/dist/components/ui/time.js +14 -0
  100. package/dist/components/ui/time.js.map +1 -0
  101. package/dist/components/ui/toolbar.d.ts +20 -0
  102. package/dist/components/ui/toolbar.d.ts.map +1 -0
  103. package/dist/components/ui/toolbar.js +42 -0
  104. package/dist/components/ui/toolbar.js.map +1 -0
  105. package/dist/components/vulnerability-status.d.ts +8 -0
  106. package/dist/components/vulnerability-status.d.ts.map +1 -0
  107. package/dist/components/vulnerability-status.js +49 -0
  108. package/dist/components/vulnerability-status.js.map +1 -0
  109. package/dist/index.d.ts +2 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +2 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/lib/use-merged-refs.d.ts +3 -0
  114. package/dist/lib/use-merged-refs.d.ts.map +1 -0
  115. package/dist/lib/use-merged-refs.js +22 -0
  116. package/dist/lib/use-merged-refs.js.map +1 -0
  117. package/dist/lib/utils.d.ts +4 -0
  118. package/dist/lib/utils.d.ts.map +1 -0
  119. package/dist/lib/utils.js +11 -0
  120. package/dist/lib/utils.js.map +1 -0
  121. package/dist/main.d.ts +2 -0
  122. package/dist/main.d.ts.map +1 -0
  123. package/dist/main.js +9 -0
  124. package/dist/main.js.map +1 -0
  125. package/dist/manifest.d.ts +8 -0
  126. package/dist/manifest.d.ts.map +1 -0
  127. package/dist/manifest.js +21 -0
  128. package/dist/manifest.js.map +1 -0
  129. package/dist/page-hash.d.ts +23 -0
  130. package/dist/page-hash.d.ts.map +1 -0
  131. package/dist/page-hash.js +45 -0
  132. package/dist/page-hash.js.map +1 -0
  133. package/dist/pages/access.d.ts +69 -0
  134. package/dist/pages/access.d.ts.map +1 -0
  135. package/dist/pages/access.js +391 -0
  136. package/dist/pages/access.js.map +1 -0
  137. package/dist/pages/audit.d.ts +63 -0
  138. package/dist/pages/audit.d.ts.map +1 -0
  139. package/dist/pages/audit.js +182 -0
  140. package/dist/pages/audit.js.map +1 -0
  141. package/dist/pages/import.d.ts +41 -0
  142. package/dist/pages/import.d.ts.map +1 -0
  143. package/dist/pages/import.js +274 -0
  144. package/dist/pages/import.js.map +1 -0
  145. package/dist/pages/management.d.ts +47 -0
  146. package/dist/pages/management.d.ts.map +1 -0
  147. package/dist/pages/management.js +141 -0
  148. package/dist/pages/management.js.map +1 -0
  149. package/dist/pages/packages.d.ts +74 -0
  150. package/dist/pages/packages.d.ts.map +1 -0
  151. package/dist/pages/packages.js +505 -0
  152. package/dist/pages/packages.js.map +1 -0
  153. package/dist/pages/projects.d.ts +58 -0
  154. package/dist/pages/projects.d.ts.map +1 -0
  155. package/dist/pages/projects.js +357 -0
  156. package/dist/pages/projects.js.map +1 -0
  157. package/dist/pages/sources/add-package-dialog.d.ts +10 -0
  158. package/dist/pages/sources/add-package-dialog.d.ts.map +1 -0
  159. package/dist/pages/sources/add-package-dialog.js +19 -0
  160. package/dist/pages/sources/add-package-dialog.js.map +1 -0
  161. package/dist/pages/sources/proxy-message.d.ts +2 -0
  162. package/dist/pages/sources/proxy-message.d.ts.map +1 -0
  163. package/dist/pages/sources/proxy-message.js +2 -0
  164. package/dist/pages/sources/proxy-message.js.map +1 -0
  165. package/dist/pages/sources/source-form.d.ts +29 -0
  166. package/dist/pages/sources/source-form.d.ts.map +1 -0
  167. package/dist/pages/sources/source-form.js +463 -0
  168. package/dist/pages/sources/source-form.js.map +1 -0
  169. package/dist/pages/sources/sync-poll.d.ts +20 -0
  170. package/dist/pages/sources/sync-poll.d.ts.map +1 -0
  171. package/dist/pages/sources/sync-poll.js +71 -0
  172. package/dist/pages/sources/sync-poll.js.map +1 -0
  173. package/dist/pages/sources.d.ts +325 -0
  174. package/dist/pages/sources.d.ts.map +1 -0
  175. package/dist/pages/sources.js +1132 -0
  176. package/dist/pages/sources.js.map +1 -0
  177. package/dist/pages/tokens/client-config.d.ts +5 -0
  178. package/dist/pages/tokens/client-config.d.ts.map +1 -0
  179. package/dist/pages/tokens/client-config.js +9 -0
  180. package/dist/pages/tokens/client-config.js.map +1 -0
  181. package/dist/pages/tokens.d.ts +127 -0
  182. package/dist/pages/tokens.d.ts.map +1 -0
  183. package/dist/pages/tokens.js +744 -0
  184. package/dist/pages/tokens.js.map +1 -0
  185. package/dist/pending.d.ts +33 -0
  186. package/dist/pending.d.ts.map +1 -0
  187. package/dist/pending.js +156 -0
  188. package/dist/pending.js.map +1 -0
  189. package/dist/qr.d.ts +14 -0
  190. package/dist/qr.d.ts.map +1 -0
  191. package/dist/qr.js +322 -0
  192. package/dist/qr.js.map +1 -0
  193. package/dist/setup.d.ts +49 -0
  194. package/dist/setup.d.ts.map +1 -0
  195. package/dist/setup.js +390 -0
  196. package/dist/setup.js.map +1 -0
  197. package/dist/test-fixtures/api-types.d.ts +228 -0
  198. package/dist/test-fixtures/api-types.d.ts.map +1 -0
  199. package/dist/test-fixtures/api-types.js +6 -0
  200. package/dist/test-fixtures/api-types.js.map +1 -0
  201. package/package.json +37 -40
  202. package/public/index.html +11 -0
  203. package/README.md +0 -11
  204. package/dist/assets/main-3NLwl1eV.js +0 -111
  205. package/dist/assets/main-CsTEYyDl.css +0 -1
  206. package/dist/config.js +0 -3
  207. package/dist/index.html +0 -22
package/dist/auth.js ADDED
@@ -0,0 +1,551 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect, useMemo, useState, useSyncExternalStore, } from 'react';
3
+ import { loadPending, savePending, } from './pending.js';
4
+ import { encodeQr } from './qr.js';
5
+ import { buildListFilterHash } from './page-hash.js';
6
+ import { Alert, AlertDescription } from './components/ui/alert.js';
7
+ import { Button } from './components/ui/button.js';
8
+ import { Card, CardContent, CardDescription, CardHeader } from './components/ui/card.js';
9
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from './components/ui/dialog.js';
10
+ import { CopyButton, IdText } from './components/ui/id-text.js';
11
+ import { Input } from './components/ui/input.js';
12
+ import { Label } from './components/ui/label.js';
13
+ function createStore(initial) {
14
+ let state = initial;
15
+ const listeners = new Set();
16
+ return {
17
+ get: () => state,
18
+ set(next) {
19
+ state = { ...state, ...next };
20
+ for (const listener of [...listeners])
21
+ listener();
22
+ },
23
+ subscribe(listener) {
24
+ listeners.add(listener);
25
+ return () => {
26
+ listeners.delete(listener);
27
+ };
28
+ },
29
+ };
30
+ }
31
+ function useStore(store) {
32
+ return useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot);
33
+ }
34
+ export function isNavigableLocation(location) {
35
+ if (location.startsWith('/')) {
36
+ if (location.startsWith('//') ||
37
+ location.includes('\\') ||
38
+ [...location].some((character) => character.charCodeAt(0) <= 32 || character.charCodeAt(0) === 127))
39
+ return false;
40
+ const base = 'https://broker.invalid';
41
+ return new URL(location, base).origin === base;
42
+ }
43
+ try {
44
+ const { protocol } = new URL(location);
45
+ return protocol === 'https:' || protocol === 'http:';
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ export function safePageHash(hash) {
52
+ const match = /^#\/(projects|access|sources|packages|tokens|audit|import|login)(?:\?([\s\S]*))?$/.exec(hash);
53
+ if (match === null || match[0] !== hash)
54
+ return '#/projects';
55
+ const query = new URLSearchParams(match[2]);
56
+ return buildListFilterHash((match[1] === 'login' ? 'projects' : match[1]), {
57
+ project: query.get('project'),
58
+ status: query.get('status'),
59
+ source: query.get('source'),
60
+ projectId: query.get('projectId'),
61
+ q: query.get('q'),
62
+ after: query.get('after'),
63
+ package: query.get('package'),
64
+ versionAfter: query.get('versionAfter'),
65
+ cursor: query.get('cursor'),
66
+ run: query.get('run'),
67
+ actor: query.get('actor'),
68
+ action: query.get('action'),
69
+ filterProject: query.get('filterProject'),
70
+ limit: query.get('limit'),
71
+ });
72
+ }
73
+ export function reauthReturnHash(hash) {
74
+ const query = new URLSearchParams(hash.split('?')[1] ?? '');
75
+ return safePageHash(`#${query.get('return') ?? '/projects'}`);
76
+ }
77
+ export async function startSso(client, provider, purpose, navigate, hash) {
78
+ const returnHash = purpose === 'login'
79
+ ? safePageHash(hash ?? '')
80
+ : `#/reauth?return=${encodeURIComponent(reauthReturnHash(hash ?? '').slice(1))}&sso=complete`;
81
+ const init = {
82
+ params: { provider },
83
+ body: { purpose, ...(hash === undefined ? {} : { returnTo: `/_pb/ui${returnHash}` }) },
84
+ headers: { Accept: 'application/json' },
85
+ };
86
+ const result = await client.request('post', '/_pb/auth/sso/{provider}/start', init);
87
+ if (!result.ok)
88
+ return 'failed';
89
+ const data = result.data;
90
+ const location = data?.location;
91
+ if (typeof location !== 'string' || !isNavigableLocation(location))
92
+ return 'refused';
93
+ navigate(location);
94
+ return 'navigated';
95
+ }
96
+ export function createLoginController(deps) {
97
+ const store = createStore({ status: 'idle', error: null });
98
+ return {
99
+ snapshot: store.get,
100
+ subscribe: store.subscribe,
101
+ async submit(input) {
102
+ if (store.get().status === 'busy')
103
+ return;
104
+ store.set({ status: 'busy', error: null });
105
+ const result = await deps.client.request('post', '/_pb/auth/local/login', {
106
+ body: { email: input.email, password: input.password, code: input.code },
107
+ });
108
+ if (result.ok) {
109
+ store.set({ status: 'signed-in', error: null });
110
+ deps.onSignedIn();
111
+ return;
112
+ }
113
+ store.set({ status: 'error', error: result.status === 0 ? 'unavailable' : 'invalid' });
114
+ },
115
+ };
116
+ }
117
+ export function createReauthFlow(deps) {
118
+ const replayListeners = new Set();
119
+ const store = createStore({
120
+ dialog: 'closed',
121
+ action: null,
122
+ busy: false,
123
+ outcome: null,
124
+ });
125
+ return {
126
+ snapshot: store.get,
127
+ subscribe: store.subscribe,
128
+ subscribeReplay(listener) {
129
+ replayListeners.add(listener);
130
+ return () => {
131
+ replayListeners.delete(listener);
132
+ };
133
+ },
134
+ requireReauth(request, options, returnHash) {
135
+ const saved = savePending(deps.storage, {
136
+ method: request.method,
137
+ path: request.path,
138
+ ...(request.idempotencyKey === undefined ? {} : { idempotencyKey: request.idempotencyKey }),
139
+ ...(request.body === undefined ? {} : { body: request.body }),
140
+ ...(request.headers === undefined ? {} : { headers: request.headers }),
141
+ ...(options.display === undefined ? {} : { display: options.display }),
142
+ credential: options.credential,
143
+ secretFields: options.secretFields,
144
+ });
145
+ if (!saved.ok) {
146
+ store.set({ dialog: 'closed', action: null, outcome: 'save-failed' });
147
+ return;
148
+ }
149
+ store.set({ dialog: 'closed', action: null, outcome: null });
150
+ deps.navigate(`#/reauth?return=${encodeURIComponent(safePageHash(returnHash).slice(1))}`);
151
+ },
152
+ restore() {
153
+ const loaded = loadPending(deps.storage, deps.now());
154
+ if (loaded.ok && loaded.action !== null) {
155
+ store.set(loaded.action.requiresCredential
156
+ ? { dialog: 'closed', action: null, outcome: 'credential-required' }
157
+ : { dialog: 'confirm', action: loaded.action, outcome: null });
158
+ }
159
+ },
160
+ clear() {
161
+ loadPending(deps.storage, deps.now());
162
+ store.set({ dialog: 'closed', action: null, busy: false, outcome: null });
163
+ },
164
+ decline() {
165
+ store.set({ dialog: 'closed', action: null, outcome: null });
166
+ },
167
+ async confirm() {
168
+ const { action, busy } = store.get();
169
+ if (action === null || action.requiresCredential || busy)
170
+ return;
171
+ store.set({ busy: true, action: null });
172
+ const init = {
173
+ ...(action.idempotencyKey === undefined ? {} : { idempotencyKey: action.idempotencyKey }),
174
+ ...(action.body === undefined ? {} : { body: action.body }),
175
+ ...(action.headers === undefined ? {} : { headers: action.headers }),
176
+ };
177
+ const replay = deps.client.request;
178
+ let outcome;
179
+ try {
180
+ const result = await replay(action.method.toLowerCase(), action.path, init);
181
+ outcome = {
182
+ path: action.path,
183
+ ok: result.ok,
184
+ status: result.status,
185
+ ...(!result.ok ? { code: result.code } : {}),
186
+ ...(result.ok &&
187
+ result.status === 201 &&
188
+ action.method === 'POST' &&
189
+ /^\/_pb\/(?:projects\/[^/]+\/)?sources$/.test(action.path) &&
190
+ result.data !== null &&
191
+ typeof result.data === 'object' &&
192
+ 'id' in result.data &&
193
+ typeof result.data.id === 'string' &&
194
+ /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/.test(result.data.id)
195
+ ? { createdSourceId: result.data.id }
196
+ : {}),
197
+ };
198
+ store.set({ dialog: 'closed', busy: false, outcome: result.ok ? 'replayed' : 'failed' });
199
+ }
200
+ catch {
201
+ outcome = { path: action.path, ok: false, status: 0 };
202
+ store.set({ dialog: 'closed', busy: false, outcome: 'failed' });
203
+ }
204
+ for (const listener of replayListeners)
205
+ listener(outcome);
206
+ },
207
+ async submitLocal(input) {
208
+ const result = await deps.client.request('post', '/_pb/auth/local/reauth', {
209
+ body: { password: input.password, code: input.code },
210
+ });
211
+ return result.ok ? 'done' : 'refused';
212
+ },
213
+ };
214
+ }
215
+ export const SETUP_NOTICE_TEXT = {
216
+ bad_token_shape: 'That does not look like a setup token. Paste the whole token as it was issued.',
217
+ token_refused: 'This setup token was not accepted. It may be wrong, expired or already used.',
218
+ origin_refused: 'The broker refused this request because it came from a different address.',
219
+ rate_limited: 'Too many attempts. Wait a few minutes and try again.',
220
+ unavailable: 'The broker could not be reached or answered unexpectedly. Try again in a moment.',
221
+ password_mismatch: 'The password and its confirmation do not match.',
222
+ missing_fields: 'Enter a password and the six digit code from your authenticator.',
223
+ finish_refused: 'Setup was not completed. Check the password requirements and the six digit code, then try again.',
224
+ };
225
+ const SETUP_TOKEN_LENGTH = 43;
226
+ const MAX_FIELD_LENGTH = 1024;
227
+ function drawable(uri) {
228
+ try {
229
+ return encodeQr(uri);
230
+ }
231
+ catch {
232
+ return null;
233
+ }
234
+ }
235
+ function startNotice(status) {
236
+ if (status === 400 || status === 401)
237
+ return 'token_refused';
238
+ if (status === 403)
239
+ return 'origin_refused';
240
+ if (status === 429)
241
+ return 'rate_limited';
242
+ return 'unavailable';
243
+ }
244
+ export function createSetupController(deps) {
245
+ const store = createStore({
246
+ stage: 'token',
247
+ busy: false,
248
+ notice: null,
249
+ enrollment: null,
250
+ });
251
+ let token = null;
252
+ return {
253
+ snapshot: store.get,
254
+ subscribe: store.subscribe,
255
+ async submitToken(input) {
256
+ const state = store.get();
257
+ if (state.busy || state.stage !== 'token')
258
+ return;
259
+ const candidate = input.trim();
260
+ if (candidate.length !== SETUP_TOKEN_LENGTH || !/^[A-Za-z0-9_-]+$/.test(candidate)) {
261
+ store.set({ notice: 'bad_token_shape' });
262
+ return;
263
+ }
264
+ store.set({ busy: true, notice: null });
265
+ const result = await deps.client.request('post', '/_pb/auth/local/setup/start', {
266
+ body: { token: candidate },
267
+ });
268
+ if (!result.ok) {
269
+ store.set({ busy: false, notice: startNotice(result.status) });
270
+ return;
271
+ }
272
+ const data = result.data;
273
+ if (typeof data?.provisioningUri !== 'string' ||
274
+ typeof data.secret !== 'string' ||
275
+ data.secret === '') {
276
+ store.set({ busy: false, notice: 'unavailable' });
277
+ return;
278
+ }
279
+ token = candidate;
280
+ store.set({
281
+ busy: false,
282
+ stage: 'enroll',
283
+ notice: null,
284
+ enrollment: { secret: data.secret, qr: drawable(data.provisioningUri) },
285
+ });
286
+ },
287
+ async finish(input) {
288
+ const state = store.get();
289
+ if (state.busy || state.stage !== 'enroll' || token === null)
290
+ return;
291
+ const digits = input.code.replace(/\s+/g, '');
292
+ if (input.password === '' || digits === '') {
293
+ store.set({ notice: 'missing_fields' });
294
+ return;
295
+ }
296
+ if (input.password.length > MAX_FIELD_LENGTH ||
297
+ digits.length > MAX_FIELD_LENGTH ||
298
+ input.password !== input.confirmation) {
299
+ store.set({ notice: 'password_mismatch' });
300
+ return;
301
+ }
302
+ store.set({ busy: true, notice: null });
303
+ const result = await deps.client.request('post', '/_pb/auth/local/setup/finish', {
304
+ body: { token, password: input.password, code: digits },
305
+ });
306
+ if (result.ok) {
307
+ token = null;
308
+ store.set({ busy: false, stage: 'done', enrollment: null });
309
+ deps.onSignedIn?.();
310
+ return;
311
+ }
312
+ if (result.status === 0 || result.status >= 500) {
313
+ token = null;
314
+ store.set({ busy: false, stage: 'uncertain', enrollment: null });
315
+ return;
316
+ }
317
+ store.set({
318
+ busy: false,
319
+ notice: result.status === 403
320
+ ? 'origin_refused'
321
+ : result.status === 429
322
+ ? 'rate_limited'
323
+ : 'finish_refused',
324
+ });
325
+ },
326
+ };
327
+ }
328
+ export const ServicesContext = createContext(null);
329
+ export function useServices() {
330
+ const services = useContext(ServicesContext);
331
+ if (services === null)
332
+ throw new Error('ServicesContext is missing');
333
+ return services;
334
+ }
335
+ function values(event) {
336
+ event.preventDefault();
337
+ const form = event.currentTarget;
338
+ const data = {};
339
+ for (const [name, value] of new FormData(form))
340
+ if (typeof value === 'string')
341
+ data[name] = value;
342
+ form.reset();
343
+ return data;
344
+ }
345
+ function TextField(props) {
346
+ return (_jsxs("div", { className: "grid gap-1.5", children: [_jsx(Label, { htmlFor: props.id, children: props.label }), _jsx(Input, { id: props.id, name: props.id, type: props.type ?? 'text', required: true, autoComplete: props.autoComplete ?? 'off', ...(props.inputMode ? { inputMode: props.inputMode } : {}), ...(props.hint ? { 'aria-describedby': `${props.id}-hint` } : {}) }), props.hint ? (_jsx("p", { id: `${props.id}-hint`, className: "text-xs text-neutral-600", children: props.hint })) : null] }));
347
+ }
348
+ const SSO_TEXT = {
349
+ refused: 'The sign-in provider returned an address the broker will not open.',
350
+ failed: 'Single sign-on could not be started. Try again in a moment.',
351
+ };
352
+ function SsoButtons(props) {
353
+ if (props.providers.length === 0)
354
+ return null;
355
+ return (_jsx("div", { className: "grid gap-2", children: props.providers.map((provider) => (_jsxs(Button, { type: "button", variant: "outline", disabled: props.busy, onClick: () => props.onSso(provider.id), children: [props.verb, " ", provider.displayName] }, provider.id))) }));
356
+ }
357
+ export function LoginView(props) {
358
+ const busy = props.state.status === 'busy';
359
+ return (_jsxs(Card, { className: "mx-auto mt-12 max-w-md", children: [_jsxs(CardHeader, { children: [_jsx("h1", { id: "page-heading", tabIndex: -1, className: "font-semibold leading-none tracking-tight", children: "Sign in" }), _jsx(CardDescription, { children: "Package Broker" })] }), _jsxs(CardContent, { className: "grid gap-4", children: [props.state.error === null ? null : (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: props.state.error === 'unavailable'
360
+ ? 'The broker could not be reached. Try again in a moment.'
361
+ : 'Sign-in failed. Check your details and try again.' }) })), props.ssoError ? (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: SSO_TEXT[props.ssoError] }) })) : null, props.local ? (_jsxs("form", { className: "grid gap-4", onSubmit: (event) => {
362
+ event.preventDefault();
363
+ if (busy)
364
+ return;
365
+ const data = values(event);
366
+ props.onSubmit({
367
+ email: data['email'] ?? '',
368
+ password: data['password'] ?? '',
369
+ code: (data['code'] ?? '').replace(/\s+/g, ''),
370
+ });
371
+ }, children: [_jsx(TextField, { id: "email", label: "E-mail", type: "email", autoComplete: "username" }), _jsx(TextField, { id: "password", label: "Password", type: "password", autoComplete: "current-password" }), _jsx(TextField, { id: "code", label: "Authenticator code", autoComplete: "one-time-code", inputMode: "numeric" }), _jsx(Button, { type: "submit", disabled: busy, children: busy ? 'Signing in…' : 'Sign in' })] })) : null, _jsx(SsoButtons, { providers: props.providers, busy: busy, onSso: props.onSso, verb: "Sign in with" })] })] }));
372
+ }
373
+ export function ReauthView(props) {
374
+ return (_jsxs(Card, { className: "mx-auto mt-12 max-w-md", children: [_jsxs(CardHeader, { children: [_jsx("h1", { id: "page-heading", tabIndex: -1, className: "font-semibold leading-none tracking-tight", children: "Confirm it is you" }), _jsx(CardDescription, { children: "This action needs a fresh sign-in." })] }), _jsxs(CardContent, { className: "grid gap-4", children: [props.error ? (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: "Confirmation failed. Check your details and try again." }) })) : null, props.local ? (_jsxs("form", { className: "grid gap-4", onSubmit: (event) => {
375
+ event.preventDefault();
376
+ if (props.busy)
377
+ return;
378
+ const data = values(event);
379
+ props.onSubmit({
380
+ password: data['password'] ?? '',
381
+ code: (data['code'] ?? '').replace(/\s+/g, ''),
382
+ });
383
+ }, children: [_jsx(TextField, { id: "password", label: "Password", type: "password", autoComplete: "current-password" }), _jsx(TextField, { id: "code", label: "Authenticator code", autoComplete: "one-time-code", inputMode: "numeric" }), _jsx(Button, { type: "submit", disabled: props.busy, children: "Confirm" })] })) : null, _jsx(SsoButtons, { providers: props.providers.filter((provider) => provider.supportsReauth), busy: props.busy, onSso: props.onSso, verb: "Confirm with" })] })] }));
384
+ }
385
+ export function ReauthConfirmDialog(props) {
386
+ return (_jsx(Dialog, { open: props.open, onOpenChange: (open) => {
387
+ if (!open)
388
+ props.onDecline();
389
+ }, children: _jsx(DialogContent, { children: _jsx(ReauthConfirmContent, { ...props }) }) }));
390
+ }
391
+ function restoredProjectSlug(action) {
392
+ return action?.path.match(/^\/_pb\/projects\/([^/]+)\/restore$/)?.[1];
393
+ }
394
+ export function pendingActionDescription(action) {
395
+ if (restoredProjectSlug(action)) {
396
+ return {
397
+ label: 'Restore project',
398
+ effect: 'Restore this archived project.',
399
+ destructive: false,
400
+ };
401
+ }
402
+ const match = action?.path.match(/\/(quarantine|tombstone|release|approve|apply|cancel|rollback)$/);
403
+ const verb = match?.[1];
404
+ const labels = {
405
+ quarantine: 'Quarantine version',
406
+ tombstone: 'Tombstone version',
407
+ release: 'Release version',
408
+ approve: 'Approve import run',
409
+ apply: 'Apply import run',
410
+ cancel: 'Cancel import run',
411
+ rollback: 'Roll back import run',
412
+ };
413
+ const effects = {
414
+ quarantine: 'Clients cannot resolve this version until it is released. Only this version is affected.',
415
+ tombstone: 'Clients can no longer install this version. Only this version is affected. This cannot be undone.',
416
+ release: 'Clients can resolve this version again. Only this version is affected.',
417
+ approve: 'Approve the reviewed plan hash for this run.',
418
+ apply: 'Apply the approved import plan.',
419
+ cancel: 'Cancel this planned import run.',
420
+ rollback: 'Restore retained before-images where rollback is possible.',
421
+ };
422
+ return {
423
+ label: verb ? (labels[verb] ?? 'Send held action') : 'Send held action',
424
+ effect: verb
425
+ ? (effects[verb] ?? 'Send the request you started before confirming your identity.')
426
+ : 'Send the request you started before confirming your identity.',
427
+ destructive: ['tombstone', 'cancel', 'rollback'].includes(verb ?? ''),
428
+ };
429
+ }
430
+ export function ReauthConfirmContent(props) {
431
+ const description = pendingActionDescription(props.action);
432
+ const display = props.action?.display;
433
+ const projectSlug = restoredProjectSlug(props.action);
434
+ const packageIds = props.action?.path.match(/\/packages\/([^/]+)\/versions\/([^/]+)/);
435
+ const runId = props.action?.path.match(/\/import-runs\/([^/]+)/)?.[1];
436
+ const request = props.action ? `${props.action.method} ${props.action.path}` : '';
437
+ return (_jsxs(_Fragment, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Send the held action now?" }), _jsx(DialogDescription, { children: "You confirmed your identity. The action below was held while you signed in and has not been sent yet." })] }), _jsxs("dl", { className: "detail-list", children: [_jsx("dt", { children: "Action" }), _jsx("dd", { className: "font-medium", children: description.label }), projectSlug ? (_jsxs(_Fragment, { children: [_jsx("dt", { children: "Project" }), _jsx("dd", { children: projectSlug })] })) : null, display ? (_jsxs(_Fragment, { children: [_jsx("dt", { children: "Package" }), _jsx("dd", { children: display.packageName }), _jsx("dt", { children: "Version" }), _jsx("dd", { className: "font-mono", children: display.version })] })) : packageIds ? (_jsxs(_Fragment, { children: [_jsx("dt", { children: "Package ID" }), _jsx("dd", { children: _jsx(IdText, { value: packageIds[1], label: "package ID" }) }), _jsx("dt", { children: "Version ID" }), _jsx("dd", { children: _jsx(IdText, { value: packageIds[2], label: "version ID" }) })] })) : null, runId ? (_jsxs(_Fragment, { children: [_jsx("dt", { children: "Run" }), _jsx("dd", { children: _jsx(IdText, { value: runId, label: "run ID" }) })] })) : null, _jsx("dt", { children: "Scope" }), _jsx("dd", { children: display?.scope ??
438
+ (props.action?.path.startsWith('/_pb/projects/') ? 'Project' : 'Organization') }), _jsx("dt", { children: "Effect" }), _jsx("dd", { children: description.effect })] }), request ? (_jsxs("details", { children: [_jsx("summary", { className: "cursor-pointer text-sm text-blue-700", children: "Request details" }), _jsxs("div", { className: "mt-2 flex min-w-0 items-start gap-2 rounded-md border border-neutral-200 bg-neutral-50 p-3", children: [_jsx("code", { className: "min-w-0 break-all text-xs", children: request }), _jsx(CopyButton, { value: request, label: "Copy request" })] })] })) : null, _jsxs(DialogFooter, { children: [_jsx(Button, { type: "button", variant: "outline", onClick: props.onDecline, children: "Discard" }), _jsx(Button, { type: "button", variant: description.destructive ? 'destructive' : 'default', onClick: props.onConfirm, children: description.label })] })] }));
439
+ }
440
+ const QR_QUIET_ZONE = 4;
441
+ function QrImage({ matrix }) {
442
+ const size = matrix.size + QR_QUIET_ZONE * 2;
443
+ const cells = [];
444
+ matrix.modules.forEach((row, y) => {
445
+ row.forEach((dark, x) => {
446
+ if (dark)
447
+ cells.push(`M${x + QR_QUIET_ZONE} ${y + QR_QUIET_ZONE}h1v1h-1z`);
448
+ });
449
+ });
450
+ return (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: `0 0 ${size} ${size}`, width: "192", height: "192", role: "img", "aria-label": "Authenticator QR code", shapeRendering: "crispEdges", children: [_jsx("rect", { width: size, height: size, fill: "#ffffff" }), _jsx("path", { d: cells.join(''), fill: "#000000" })] }));
451
+ }
452
+ export function SetupView(props) {
453
+ const { state } = props;
454
+ return (_jsxs(Card, { className: "mx-auto mt-12 max-w-md", children: [_jsx(CardHeader, { children: _jsx("h1", { id: "page-heading", tabIndex: -1, className: "font-semibold leading-none tracking-tight", children: "First-run setup" }) }), _jsxs(CardContent, { className: "grid gap-4", children: [state.notice === null ? null : (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: SETUP_NOTICE_TEXT[state.notice] }) })), state.stage === 'token' ? (_jsxs("form", { className: "grid gap-4", onSubmit: (event) => {
455
+ event.preventDefault();
456
+ if (state.busy)
457
+ return;
458
+ props.onToken(values(event)['token'] ?? '');
459
+ }, children: [_jsx(TextField, { id: "token", label: "Setup token", hint: "Paste the token the broker printed at start." }), _jsx(Button, { type: "submit", disabled: state.busy, children: "Continue" })] })) : null, state.stage === 'enroll' && state.enrollment ? (_jsxs("form", { className: "grid gap-4", onSubmit: (event) => {
460
+ event.preventDefault();
461
+ if (state.busy)
462
+ return;
463
+ const data = values(event);
464
+ props.onFinish({
465
+ password: data['password'] ?? '',
466
+ confirmation: data['confirmation'] ?? '',
467
+ code: data['code'] ?? '',
468
+ });
469
+ }, children: [state.enrollment.qr ? _jsx(QrImage, { matrix: state.enrollment.qr }) : null, _jsxs("p", { className: "text-sm", children: ["Setup key: ", _jsx("code", { className: "break-all", children: state.enrollment.secret })] }), _jsx(TextField, { id: "password", label: "Password", type: "password", autoComplete: "new-password" }), _jsx(TextField, { id: "confirmation", label: "Confirm password", type: "password", autoComplete: "new-password" }), _jsx(TextField, { id: "code", label: "Authenticator code", autoComplete: "one-time-code", inputMode: "numeric" }), _jsx(Button, { type: "submit", disabled: state.busy, children: "Finish setup" })] })) : null, state.stage === 'done' ? _jsx("p", { children: "Setup is complete. You can now sign in." }) : null, state.stage === 'uncertain' ? (_jsx("p", { children: "The broker did not confirm the result. Try signing in; if that fails, ask for a fresh setup token." })) : null] })] }));
470
+ }
471
+ export function useProviders(client) {
472
+ const [state, setState] = useState({
473
+ providers: [],
474
+ local: true,
475
+ });
476
+ useEffect(() => {
477
+ let live = true;
478
+ void client.request('get', '/_pb/auth/providers').then((result) => {
479
+ if (live && result.ok && result.data) {
480
+ setState({ providers: result.data.providers, local: result.data.local });
481
+ }
482
+ });
483
+ return () => {
484
+ live = false;
485
+ };
486
+ }, [client]);
487
+ return state;
488
+ }
489
+ const assignLocation = (location) => {
490
+ window.location.assign(location);
491
+ };
492
+ export function LoginScreen(props) {
493
+ const { client, onSignedIn } = props;
494
+ const controller = useMemo(() => createLoginController({ client, onSignedIn }), [client, onSignedIn]);
495
+ const state = useStore(controller);
496
+ const { providers, local } = useProviders(client);
497
+ const [ssoError, setSsoError] = useState(null);
498
+ return (_jsx(LoginView, { state: state, providers: providers, local: local, ssoError: ssoError, onSubmit: (input) => void controller.submit(input), onSso: (provider) => {
499
+ setSsoError(null);
500
+ void startSso(client, provider, 'login', assignLocation, window.location.hash).then((outcome) => {
501
+ if (outcome !== 'navigated')
502
+ setSsoError(outcome);
503
+ });
504
+ } }));
505
+ }
506
+ export function SetupScreen(props) {
507
+ const { client, onSignedIn } = props;
508
+ const controller = useMemo(() => createSetupController({ client, onSignedIn }), [client, onSignedIn]);
509
+ const state = useStore(controller);
510
+ return (_jsx(SetupView, { state: state, onToken: (token) => void controller.submitToken(token), onFinish: (input) => void controller.finish(input) }));
511
+ }
512
+ export function ReauthScreen(props) {
513
+ const { client, flow, onDone } = props;
514
+ const { providers, local } = useProviders(client);
515
+ const [error, setError] = useState(false);
516
+ const [busy, setBusy] = useState(false);
517
+ return (_jsx(ReauthView, { providers: providers, local: local, error: error, busy: busy, onSubmit: (input) => {
518
+ setBusy(true);
519
+ setError(false);
520
+ void flow.submitLocal(input).then((outcome) => {
521
+ setBusy(false);
522
+ if (outcome === 'done') {
523
+ flow.restore();
524
+ onDone();
525
+ }
526
+ else {
527
+ setError(true);
528
+ }
529
+ });
530
+ }, onSso: (provider) => {
531
+ setError(false);
532
+ void startSso(client, provider, 'reauth', assignLocation, window.location.hash).then((outcome) => {
533
+ if (outcome !== 'navigated')
534
+ setError(true);
535
+ });
536
+ } }));
537
+ }
538
+ export function ReauthConfirm(props) {
539
+ const state = useStore(props.flow);
540
+ if (state.outcome === 'save-failed' ||
541
+ state.outcome === 'failed' ||
542
+ state.outcome === 'credential-required') {
543
+ return (_jsxs(Alert, { variant: "destructive", className: "mx-auto my-4 max-w-lg", children: [_jsx(AlertDescription, { children: state.outcome === 'credential-required'
544
+ ? 'Enter the credential again to complete your action.'
545
+ : state.outcome === 'save-failed'
546
+ ? 'Your action could not be saved. Try the action again after dismissing this message.'
547
+ : 'Your action could not be completed. Review the current data and try the action again.' }), _jsx(Button, { type: "button", variant: "outline", onClick: () => props.flow.decline(), children: "Dismiss" })] }));
548
+ }
549
+ return (_jsx(ReauthConfirmDialog, { open: state.dialog === 'confirm', action: state.action, onConfirm: () => void props.flow.confirm(), onDecline: () => props.flow.decline() }));
550
+ }
551
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import type { HTMLAttributes } from 'react';
3
+ declare const alertVariants: (props?: ({
4
+ variant?: "default" | "destructive" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export declare function Alert({ className, variant, ...props }: HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>): import("react").JSX.Element;
7
+ export declare function AlertTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>): import("react").JSX.Element;
8
+ export declare function AlertDescription({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/ui/alert.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,QAAA,MAAM,aAAa;;8EAQjB,CAAC;AAEH,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,+BAErE;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,kBAAkB,CAAC,+BAErF;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAEvF"}