@package-broker/ui 2.0.0-rc.2 → 2.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/api-types.d.ts +8148 -2725
- package/dist/api-types.d.ts.map +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +10 -0
- package/dist/api.js.map +1 -1
- package/dist/app-path.d.ts +2 -0
- package/dist/app-path.d.ts.map +1 -0
- package/dist/app-path.js +2 -0
- package/dist/app-path.js.map +1 -0
- package/dist/app.d.ts +10 -14
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +37 -22
- package/dist/app.js.map +1 -1
- package/dist/assets/access.62e9484517a0.js +1 -0
- package/dist/assets/app.45b156168495.css +2 -0
- package/dist/assets/app.c064670cdc0d.js +9 -0
- package/dist/assets/audit.b7c40b9dc998.js +1 -0
- package/dist/assets/chunk.28a4d8aab337.js +1 -0
- package/dist/assets/chunk.3fcd6998795a.js +1 -0
- package/dist/assets/chunk.51497edc7697.js +4 -0
- package/dist/assets/chunk.56d473a1587d.js +1 -0
- package/dist/assets/chunk.675b635d9462.js +1 -0
- package/dist/assets/chunk.6ea6bdcaa465.js +1 -0
- package/dist/assets/chunk.741aec8d1ff9.js +1 -0
- package/dist/assets/chunk.815f9a91c741.js +1 -0
- package/dist/assets/chunk.8442124f6802.js +1 -0
- package/dist/assets/chunk.965b76812604.js +2 -0
- package/dist/assets/chunk.a6d755a9789f.js +1 -0
- package/dist/assets/chunk.d18497920e4d.js +1 -0
- package/dist/assets/chunk.d813fefb410d.js +1 -0
- package/dist/assets/chunk.e3b0c44298fc.js +0 -0
- package/dist/assets/chunk.f54ea1378c8c.js +1 -0
- package/dist/assets/chunk.fd375c54b526.js +1 -0
- package/dist/assets/import.e7a1e5834631.js +1 -0
- package/dist/assets/index.html +9 -2
- package/dist/assets/manifest.json +108 -8
- package/dist/assets/notifications.19225fe12044.js +1 -0
- package/dist/assets/npm-login.e059678af13d.js +1 -0
- package/dist/assets/packages.ab5ab25b1c75.js +2 -0
- package/dist/assets/projects.927fe18c785c.js +1 -0
- package/dist/assets/setup.8e977608d413.js +1 -0
- package/dist/assets/setup.html +3 -3
- package/dist/assets/sources.ae50f239f80f.js +1 -0
- package/dist/assets/tokens.6b86d8d97e07.js +4 -0
- package/dist/auth.d.ts +26 -3
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +133 -19
- package/dist/auth.js.map +1 -1
- package/dist/components/product-footer-content.d.ts +21 -0
- package/dist/components/product-footer-content.d.ts.map +1 -0
- package/dist/components/product-footer-content.js +30 -0
- package/dist/components/product-footer-content.js.map +1 -0
- package/dist/components/product-footer.d.ts +3 -0
- package/dist/components/product-footer.d.ts.map +1 -0
- package/dist/components/product-footer.js +6 -0
- package/dist/components/product-footer.js.map +1 -0
- package/dist/components/ui/status-badge.d.ts +5 -0
- package/dist/components/ui/status-badge.d.ts.map +1 -1
- package/dist/components/ui/status-badge.js +10 -0
- package/dist/components/ui/status-badge.js.map +1 -1
- package/dist/manifest.d.ts +32 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +41 -0
- package/dist/manifest.js.map +1 -1
- package/dist/package-limits.d.ts +3 -0
- package/dist/package-limits.d.ts.map +1 -0
- package/dist/package-limits.js +3 -0
- package/dist/package-limits.js.map +1 -0
- package/dist/page-hash.d.ts +1 -1
- package/dist/page-hash.d.ts.map +1 -1
- package/dist/page-hash.js.map +1 -1
- package/dist/page-loader.d.ts +5 -0
- package/dist/page-loader.d.ts.map +1 -0
- package/dist/page-loader.js +39 -0
- package/dist/page-loader.js.map +1 -0
- package/dist/pages/access/grant-form.d.ts +48 -0
- package/dist/pages/access/grant-form.d.ts.map +1 -0
- package/dist/pages/access/grant-form.js +153 -0
- package/dist/pages/access/grant-form.js.map +1 -0
- package/dist/pages/access/permission-descriptions.d.ts +2 -0
- package/dist/pages/access/permission-descriptions.d.ts.map +1 -0
- package/dist/pages/access/permission-descriptions.js +36 -0
- package/dist/pages/access/permission-descriptions.js.map +1 -0
- package/dist/pages/access/role-catalogue.d.ts +22 -0
- package/dist/pages/access/role-catalogue.d.ts.map +1 -0
- package/dist/pages/access/role-catalogue.js +40 -0
- package/dist/pages/access/role-catalogue.js.map +1 -0
- package/dist/pages/access.d.ts +6 -0
- package/dist/pages/access.d.ts.map +1 -1
- package/dist/pages/access.js +66 -31
- package/dist/pages/access.js.map +1 -1
- package/dist/pages/audit.d.ts.map +1 -1
- package/dist/pages/notification-actions.d.ts +41 -0
- package/dist/pages/notification-actions.d.ts.map +1 -0
- package/dist/pages/notification-actions.js +187 -0
- package/dist/pages/notification-actions.js.map +1 -0
- package/dist/pages/notification-draft.d.ts +13 -0
- package/dist/pages/notification-draft.d.ts.map +1 -0
- package/dist/pages/notification-draft.js +75 -0
- package/dist/pages/notification-draft.js.map +1 -0
- package/dist/pages/notification-form.d.ts +35 -0
- package/dist/pages/notification-form.d.ts.map +1 -0
- package/dist/pages/notification-form.js +167 -0
- package/dist/pages/notification-form.js.map +1 -0
- package/dist/pages/notifications-controller.d.ts +41 -0
- package/dist/pages/notifications-controller.d.ts.map +1 -0
- package/dist/pages/notifications-controller.js +184 -0
- package/dist/pages/notifications-controller.js.map +1 -0
- package/dist/pages/notifications.d.ts +10 -0
- package/dist/pages/notifications.d.ts.map +1 -0
- package/dist/pages/notifications.js +301 -0
- package/dist/pages/notifications.js.map +1 -0
- package/dist/pages/npm-login.d.ts +2 -0
- package/dist/pages/npm-login.d.ts.map +1 -0
- package/dist/pages/npm-login.js +62 -0
- package/dist/pages/npm-login.js.map +1 -0
- package/dist/pages/packages/npm-workflow.d.ts +31 -0
- package/dist/pages/packages/npm-workflow.d.ts.map +1 -0
- package/dist/pages/packages/npm-workflow.js +381 -0
- package/dist/pages/packages/npm-workflow.js.map +1 -0
- package/dist/pages/packages/package-detail.d.ts +9 -0
- package/dist/pages/packages/package-detail.d.ts.map +1 -0
- package/dist/pages/packages/package-detail.js +242 -0
- package/dist/pages/packages/package-detail.js.map +1 -0
- package/dist/pages/packages/source-actions.d.ts +49 -0
- package/dist/pages/packages/source-actions.d.ts.map +1 -0
- package/dist/pages/packages/source-actions.js +319 -0
- package/dist/pages/packages/source-actions.js.map +1 -0
- package/dist/pages/packages.d.ts +15 -4
- package/dist/pages/packages.d.ts.map +1 -1
- package/dist/pages/packages.js +138 -20
- package/dist/pages/packages.js.map +1 -1
- package/dist/pages/projects/project-form-model.d.ts +25 -0
- package/dist/pages/projects/project-form-model.d.ts.map +1 -0
- package/dist/pages/projects/project-form-model.js +69 -0
- package/dist/pages/projects/project-form-model.js.map +1 -0
- package/dist/pages/projects/project-form.d.ts +14 -0
- package/dist/pages/projects/project-form.d.ts.map +1 -0
- package/dist/pages/projects/project-form.js +91 -0
- package/dist/pages/projects/project-form.js.map +1 -0
- package/dist/pages/projects.d.ts +3 -2
- package/dist/pages/projects.d.ts.map +1 -1
- package/dist/pages/projects.js +29 -38
- package/dist/pages/projects.js.map +1 -1
- package/dist/pages/sources/source-form.d.ts +5 -2
- package/dist/pages/sources/source-form.d.ts.map +1 -1
- package/dist/pages/sources/source-form.js +39 -27
- package/dist/pages/sources/source-form.js.map +1 -1
- package/dist/pages/sources/sync-copy.d.ts +5 -0
- package/dist/pages/sources/sync-copy.d.ts.map +1 -0
- package/dist/pages/sources/sync-copy.js +11 -0
- package/dist/pages/sources/sync-copy.js.map +1 -0
- package/dist/pages/sources.d.ts +11 -3
- package/dist/pages/sources.d.ts.map +1 -1
- package/dist/pages/sources.js +103 -25
- package/dist/pages/sources.js.map +1 -1
- package/dist/pages/tokens/client-config.d.ts +3 -0
- package/dist/pages/tokens/client-config.d.ts.map +1 -1
- package/dist/pages/tokens/client-config.js +12 -2
- package/dist/pages/tokens/client-config.js.map +1 -1
- package/dist/pages/tokens/issue-token-form.d.ts +27 -0
- package/dist/pages/tokens/issue-token-form.d.ts.map +1 -0
- package/dist/pages/tokens/issue-token-form.js +270 -0
- package/dist/pages/tokens/issue-token-form.js.map +1 -0
- package/dist/pages/tokens/principal-form.d.ts +8 -0
- package/dist/pages/tokens/principal-form.d.ts.map +1 -0
- package/dist/pages/tokens/principal-form.js +155 -0
- package/dist/pages/tokens/principal-form.js.map +1 -0
- package/dist/pages/tokens/trusted-publishers-controller.d.ts +42 -0
- package/dist/pages/tokens/trusted-publishers-controller.d.ts.map +1 -0
- package/dist/pages/tokens/trusted-publishers-controller.js +202 -0
- package/dist/pages/tokens/trusted-publishers-controller.js.map +1 -0
- package/dist/pages/tokens/trusted-publishers.d.ts +6 -0
- package/dist/pages/tokens/trusted-publishers.d.ts.map +1 -0
- package/dist/pages/tokens/trusted-publishers.js +116 -0
- package/dist/pages/tokens/trusted-publishers.js.map +1 -0
- package/dist/pages/tokens.d.ts +100 -6
- package/dist/pages/tokens.d.ts.map +1 -1
- package/dist/pages/tokens.js +324 -86
- package/dist/pages/tokens.js.map +1 -1
- package/dist/setup.d.ts +3 -2
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +70 -10
- package/dist/setup.js.map +1 -1
- package/dist/token-pending.d.ts +4 -0
- package/dist/token-pending.d.ts.map +1 -0
- package/dist/token-pending.js +12 -0
- package/dist/token-pending.js.map +1 -0
- package/package.json +3 -3
- package/dist/assets/app.b2abf3c46f6e.js +0 -15
- package/dist/assets/app.e8cea8b32d3a.css +0 -2
- package/dist/assets/setup.98343039898f.js +0 -1
package/dist/manifest.js
CHANGED
|
@@ -18,4 +18,45 @@ export function checkBudget(total, budget) {
|
|
|
18
18
|
const limit = Math.floor((budget * (100 + BUDGET_GROWTH_PERCENT)) / 100);
|
|
19
19
|
return { ok: total <= limit, limit };
|
|
20
20
|
}
|
|
21
|
+
export function measureInitialLoad(outputs, entry, gzipSizes, fixedBytes) {
|
|
22
|
+
const initial = new Set();
|
|
23
|
+
function visit(path) {
|
|
24
|
+
if (initial.has(path))
|
|
25
|
+
return;
|
|
26
|
+
initial.add(path);
|
|
27
|
+
for (const imported of outputs[path].imports) {
|
|
28
|
+
if (imported.kind !== 'dynamic-import')
|
|
29
|
+
visit(imported.path);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
visit(entry);
|
|
33
|
+
return {
|
|
34
|
+
initialGzipBytes: fixedBytes + [...initial].reduce((sum, path) => sum + gzipSizes[path], 0),
|
|
35
|
+
initialFiles: [...initial],
|
|
36
|
+
totalGzipBytes: fixedBytes + Object.values(gzipSizes).reduce((sum, bytes) => sum + bytes, 0),
|
|
37
|
+
chunkGzipBytes: Math.max(0, ...Object.entries(gzipSizes)
|
|
38
|
+
.filter(([path]) => !initial.has(path))
|
|
39
|
+
.map(([, bytes]) => bytes)),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function checkLoadBudgets(sizes, budget) {
|
|
43
|
+
const keys = ['initialGzipBytes', 'chunkGzipBytes', 'totalGzipBytes'];
|
|
44
|
+
for (const key of Object.keys(budget)) {
|
|
45
|
+
if (!keys.some((known) => known === key))
|
|
46
|
+
throw new Error(`Unknown bundle budget key: ${key}`);
|
|
47
|
+
}
|
|
48
|
+
for (const key of keys) {
|
|
49
|
+
if (!Object.hasOwn(budget, key))
|
|
50
|
+
throw new Error(`Missing bundle budget key: ${key}`);
|
|
51
|
+
if (!Number.isSafeInteger(budget[key]) ||
|
|
52
|
+
budget[key] < (key === 'chunkGzipBytes' ? 0 : 1)) {
|
|
53
|
+
throw new Error('Bundle budget values must be positive safe integers (chunkGzipBytes may be zero)');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
initial: checkBudget(sizes.initialGzipBytes, budget.initialGzipBytes),
|
|
58
|
+
chunk: checkBudget(sizes.chunkGzipBytes, budget.chunkGzipBytes),
|
|
59
|
+
total: checkBudget(sizes.totalGzipBytes, budget.totalGzipBytes),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
21
62
|
//# sourceMappingURL=manifest.js.map
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAO9F,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACzF,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxE,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACnF,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,MAAc;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACzE,OAAO,EAAE,EAAE,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-limits.d.ts","sourceRoot":"","sources":["../src/package-limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,iBAAiB,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-limits.js","sourceRoot":"","sources":["../src/package-limits.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC"}
|
package/dist/page-hash.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type HashRoute = 'projects' | 'access' | 'sources' | 'packages' | 'tokens' | 'audit' | 'import' | 'login' | 'setup' | 'reauth';
|
|
1
|
+
export type HashRoute = 'projects' | 'access' | 'sources' | 'packages' | 'tokens' | 'notifications' | 'npm-login' | 'audit' | 'import' | 'login' | 'setup' | 'reauth';
|
|
2
2
|
declare const FILTER_LIMITS: {
|
|
3
3
|
readonly project: 64;
|
|
4
4
|
readonly status: 64;
|
package/dist/page-hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-hash.d.ts","sourceRoot":"","sources":["../src/page-hash.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,CAAC;AAEb,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;CAeT,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,CAAC,IAAI,MAAM,OAAO,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CACvE,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAuBvF"}
|
|
1
|
+
{"version":3,"file":"page-hash.d.ts","sourceRoot":"","sources":["../src/page-hash.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,QAAQ,GACR,eAAe,GACf,WAAW,GACX,OAAO,GACP,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,CAAC;AAEb,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;CAeT,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,CAAC,IAAI,MAAM,OAAO,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CACvE,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAuBvF"}
|
package/dist/page-hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-hash.js","sourceRoot":"","sources":["../src/page-hash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"page-hash.js","sourceRoot":"","sources":["../src/page-hash.ts"],"names":[],"mappings":"AAcA,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,EAAE;IACb,CAAC,EAAE,GAAG;IACN,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,aAAa,EAAE,GAAG;IAClB,KAAK,EAAE,CAAC;CACA,CAAC;AAMX,MAAM,UAAU,mBAAmB,CAAC,KAAgB,EAAE,UAAuB,EAAE;IAC7E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAA0B,EAAE,CAAC;QACvE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;YAAE,SAAS;QACxF,IAAI,IAAI,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QAClE,IACE,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,CAAC;YAC3C,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEtE,SAAS;QACX,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,cAAc,CAAC,IAAI,KAAK,KAAK,UAAU;YAAE,SAAS;QACtF,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,KAAK,KAAK,QAAQ;YAAE,SAAS;QAC1E,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,OAAO;YAAE,SAAS;QAChG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC;YACxF,SAAS;QACX,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-loader.d.ts","sourceRoot":"","sources":["../src/page-loader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAOhE,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;CAAE,+BAgD1E"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Button } from './components/ui/button.js';
|
|
4
|
+
const resolvedPages = new Map();
|
|
5
|
+
export function PageLoader({ load }) {
|
|
6
|
+
const [state, setState] = useState(() => {
|
|
7
|
+
const Page = resolvedPages.get(load);
|
|
8
|
+
return Page ? { Page } : 'loading';
|
|
9
|
+
});
|
|
10
|
+
const [attempt, setAttempt] = useState(0);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
let live = true;
|
|
13
|
+
const cached = resolvedPages.get(load);
|
|
14
|
+
if (cached) {
|
|
15
|
+
setState({ Page: cached });
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
void load().then((Page) => {
|
|
19
|
+
resolvedPages.set(load, Page);
|
|
20
|
+
if (live)
|
|
21
|
+
setState({ Page });
|
|
22
|
+
}, () => {
|
|
23
|
+
if (live)
|
|
24
|
+
setState('error');
|
|
25
|
+
});
|
|
26
|
+
return () => {
|
|
27
|
+
live = false;
|
|
28
|
+
};
|
|
29
|
+
}, [load, attempt]);
|
|
30
|
+
if (state === 'loading')
|
|
31
|
+
return (_jsx("p", { role: "status", "aria-busy": "true", children: "Loading page\u2026" }));
|
|
32
|
+
if (state === 'error')
|
|
33
|
+
return (_jsxs("div", { role: "alert", children: [_jsx("p", { children: "This page could not be loaded." }), _jsx(Button, { onClick: () => {
|
|
34
|
+
setState('loading');
|
|
35
|
+
setAttempt((value) => value + 1);
|
|
36
|
+
}, children: "Try again" }), _jsx(Button, { onClick: () => location.reload(), children: "Reload page" })] }));
|
|
37
|
+
return _jsx(state.Page, {});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=page-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-loader.js","sourceRoot":"","sources":["../src/page-loader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+C,CAAC;AAI7E,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAA0C;IACzE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,KAAK,IAAI,EAAE,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,EAAE;YACP,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,IAAI;gBAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC,EACD,GAAG,EAAE;YACH,IAAI,IAAI;gBAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CACF,CAAC;QACF,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACpB,IAAI,KAAK,KAAK,SAAS;QACrB,OAAO,CACL,YAAG,IAAI,EAAC,QAAQ,eAAW,MAAM,mCAE7B,CACL,CAAC;IACJ,IAAI,KAAK,KAAK,OAAO;QACnB,OAAO,CACL,eAAK,IAAI,EAAC,OAAO,aACf,yDAAqC,EACrC,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;wBACZ,QAAQ,CAAC,SAAS,CAAC,CAAC;wBACpB,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBACnC,CAAC,0BAGM,EACT,KAAC,MAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,4BAAsB,IAC1D,CACP,CAAC;IACJ,OAAO,KAAC,KAAK,CAAC,IAAI,KAAG,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { operations } from '../../api-types.js';
|
|
2
|
+
import { type Catalogue, type Provider, type Role } from './role-catalogue.js';
|
|
3
|
+
type GrantInput = operations['createGrant']['requestBody']['content']['application/json'];
|
|
4
|
+
export interface GrantDraft {
|
|
5
|
+
type: 'email' | 'group';
|
|
6
|
+
email: string;
|
|
7
|
+
group: string;
|
|
8
|
+
provider: string;
|
|
9
|
+
roleId: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function grantBody(draft: GrantDraft): {
|
|
12
|
+
body: GrantInput;
|
|
13
|
+
errors?: never;
|
|
14
|
+
} | {
|
|
15
|
+
errors: Record<string, string>;
|
|
16
|
+
body?: never;
|
|
17
|
+
};
|
|
18
|
+
export declare function grantSummary(draft: GrantDraft, role: Pick<Role, 'name' | 'key' | 'permissions'> | undefined, provider: Provider | undefined, project: string | null, organization: string): string;
|
|
19
|
+
export declare function RolePicker({ catalogue, project, value, onChange, id, error, retry, }: {
|
|
20
|
+
catalogue: Catalogue;
|
|
21
|
+
project: string | null;
|
|
22
|
+
value: string;
|
|
23
|
+
onChange: (value: string) => void;
|
|
24
|
+
id: string;
|
|
25
|
+
error?: string | undefined;
|
|
26
|
+
retry: () => void;
|
|
27
|
+
}): import("react").JSX.Element;
|
|
28
|
+
export interface GrantFormProps {
|
|
29
|
+
catalogue: Catalogue;
|
|
30
|
+
providers: Provider[];
|
|
31
|
+
providerStatus: 'ready' | 'loading' | 'error';
|
|
32
|
+
project: string | null;
|
|
33
|
+
organization: string;
|
|
34
|
+
busy: boolean;
|
|
35
|
+
retry: () => void;
|
|
36
|
+
submit: (body: GrantInput) => Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
export declare function GrantForm(props: GrantFormProps): import("react").JSX.Element;
|
|
39
|
+
export declare function ChangeRoleForm({ catalogue, project, currentRole, busy, retry, submit, }: {
|
|
40
|
+
catalogue: Catalogue;
|
|
41
|
+
project: string | null;
|
|
42
|
+
currentRole: string;
|
|
43
|
+
busy: boolean;
|
|
44
|
+
retry: () => void;
|
|
45
|
+
submit: (roleId: string) => Promise<void>;
|
|
46
|
+
}): import("react").JSX.Element;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=grant-form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grant-form.d.ts","sourceRoot":"","sources":["../../../src/pages/access/grant-form.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,IAAI,EACV,MAAM,qBAAqB,CAAC;AAE7B,KAAK,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC1F,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,GAChB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAmCzF;AACD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,aAAa,CAAC,GAAG,SAAS,EAC5D,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,YAAY,EAAE,MAAM,UAgBrB;AAkCD,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,OAAO,EACP,KAAK,EACL,QAAQ,EACR,EAAE,EACF,KAAK,EACL,KAAK,GACN,EAAE;IACD,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,+BA+FA;AACD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,cAAc,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BA6N9C;AACD,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,OAAO,EACP,WAAW,EACX,IAAI,EACJ,KAAK,EACL,MAAM,GACP,EAAE;IACD,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,+BAuCA"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useId, useState } from 'react';
|
|
3
|
+
import { Button } from '../../components/ui/button.js';
|
|
4
|
+
import { Input } from '../../components/ui/input.js';
|
|
5
|
+
import { Label } from '../../components/ui/label.js';
|
|
6
|
+
import { Select } from '../../components/ui/select.js';
|
|
7
|
+
import { permissionDescriptions } from './permission-descriptions.js';
|
|
8
|
+
import { roleDescription, scopeRoles, } from './role-catalogue.js';
|
|
9
|
+
export function grantBody(draft) {
|
|
10
|
+
const errors = {};
|
|
11
|
+
const email = draft.email.trim().toLowerCase();
|
|
12
|
+
if (draft.type === 'email') {
|
|
13
|
+
const domain = email.slice(email.indexOf('@') + 1);
|
|
14
|
+
if (email.length > 254 ||
|
|
15
|
+
!/^[\x21-\x7e]+$/.test(email) ||
|
|
16
|
+
!/^[^@]+@[^@]+$/.test(email) ||
|
|
17
|
+
!/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(domain) ||
|
|
18
|
+
!/[a-z]/.test(domain.slice(domain.lastIndexOf('.') + 1)))
|
|
19
|
+
errors['email'] = 'Enter a valid sign-in email address.';
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
if (!draft.provider)
|
|
23
|
+
errors['provider'] = 'Choose a sign-in provider.';
|
|
24
|
+
if (!draft.group)
|
|
25
|
+
errors['group'] = 'Enter the group value sent by your provider.';
|
|
26
|
+
else if (draft.group !== draft.group.trim())
|
|
27
|
+
errors['group'] =
|
|
28
|
+
"Remove spaces at the start or end. Keep the group's spelling and capitalization.";
|
|
29
|
+
else if (draft.group.length > 256 || /[\p{Cc}\p{Cf}\p{Cs}]/u.test(draft.group))
|
|
30
|
+
errors['group'] = 'Enter the group value sent by your provider.';
|
|
31
|
+
}
|
|
32
|
+
if (!draft.roleId)
|
|
33
|
+
errors['roleId'] = 'Choose a role to review this grant.';
|
|
34
|
+
if (Object.keys(errors).length)
|
|
35
|
+
return { errors };
|
|
36
|
+
return {
|
|
37
|
+
body: {
|
|
38
|
+
roleId: draft.roleId,
|
|
39
|
+
subject: draft.type === 'email'
|
|
40
|
+
? { type: 'email', value: email }
|
|
41
|
+
: { type: 'group', provider: draft.provider, value: draft.group },
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function grantSummary(draft, role, provider, project, organization) {
|
|
46
|
+
if (draft.type === 'email' && !draft.email.trim())
|
|
47
|
+
return 'Enter an email address to review this grant.';
|
|
48
|
+
if (draft.type === 'group' && (!provider || !draft.group))
|
|
49
|
+
return 'Choose a provider and enter a group value to review this grant.';
|
|
50
|
+
if (!draft.roleId)
|
|
51
|
+
return 'Choose a role to review this grant.';
|
|
52
|
+
const subject = draft.type === 'email'
|
|
53
|
+
? draft.email.trim().toLowerCase()
|
|
54
|
+
: `Members of ${draft.group} signing in with ${provider.displayName}`;
|
|
55
|
+
const context = project === null
|
|
56
|
+
? `for ${organization}${role?.key === 'organization_auditor' ? ', including read access across projects' : role?.permissions.some((p) => p.startsWith('project:')) ? ', including access across projects' : ''}`
|
|
57
|
+
: `on project ${project}`;
|
|
58
|
+
return `${subject} will get ${role?.name ?? 'the selected role'} ${context}.`;
|
|
59
|
+
}
|
|
60
|
+
function FormField({ id, label, help, error, note, children, }) {
|
|
61
|
+
return (_jsxs("div", { className: "grid min-w-0 gap-1", children: [_jsx(Label, { htmlFor: id, children: label }), children, help ? (_jsx("p", { id: `${id}-help`, className: "text-sm text-neutral-600", children: help })) : null, note ? _jsx("p", { className: "text-sm text-neutral-600", children: note }) : null, error ? (_jsx("p", { id: `${id}-error`, role: "alert", children: error })) : null] }));
|
|
62
|
+
}
|
|
63
|
+
export function RolePicker({ catalogue, project, value, onChange, id, error, retry, }) {
|
|
64
|
+
const roles = scopeRoles(catalogue.roles, project);
|
|
65
|
+
const selected = roles.find((role) => role.id === value);
|
|
66
|
+
const describedBy = `${id}-help${error ? ` ${id}-error` : ''}`;
|
|
67
|
+
if (catalogue.status === 'forbidden')
|
|
68
|
+
return (_jsxs(_Fragment, { children: [_jsx("p", { className: "lg:col-span-2", children: "Role choices are unavailable for your account. Ask an organization administrator to grant access." }), _jsx(FormField, { id: id, label: "Enter a role ID", help: "Ask an organization administrator for the role ID.", error: error, children: _jsx(Input, { id: id, name: "roleId", value: value, onChange: (event) => onChange(event.target.value), "aria-invalid": !!error, "aria-describedby": describedBy }) })] }));
|
|
69
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "grid min-w-0 gap-2", children: [_jsx(FormField, { id: id, label: "Role", error: error, children: _jsxs(Select, { id: id, name: "roleId", value: selected ? value : '', onChange: (event) => onChange(event.target.value), disabled: catalogue.status !== 'ready' || !roles.length, "aria-invalid": !!error, "aria-describedby": describedBy, children: [_jsx("option", { value: "", children: "Choose a role" }), roles.map((role) => (_jsx("option", { value: role.id, children: role.name }, role.id)))] }) }), _jsxs("div", { id: `${id}-help`, className: "grid gap-2 text-sm", children: [catalogue.status === 'loading' ? (_jsx("p", { children: "Loading roles\u2026" })) : catalogue.status === 'error' ? (_jsxs(_Fragment, { children: [_jsx("p", { role: "alert", children: "Roles could not be loaded. Try again." }), _jsx(Button, { type: "button", variant: "outline", onClick: retry, children: "Retry roles" })] })) : !roles.length ? (_jsx("p", { children: "No roles are available to grant at this scope." })) : null, selected ? (_jsxs(_Fragment, { children: [_jsx("p", { children: roleDescription(selected) }), _jsx("p", { children: selected.isSystem ? 'System role' : 'Custom role' }), selected.isSystem && selected.key === 'project_developer' ? (_jsx("p", { children: "Suggested for developers; includes package read and publish permissions." })) : null, selected.permissions.includes('project:packages:write') ? (_jsx("p", { children: "This role includes permission to publish npm packages to admitted hosted sources." })) : null] })) : null] })] }), selected ? (_jsxs("details", { className: "min-w-0 lg:col-span-2", children: [_jsxs("summary", { className: "cursor-pointer underline", children: ["View permissions (", selected.permissions.length, ")"] }), _jsx("ul", { children: selected.permissions.map((permission) => (_jsxs("li", { className: "my-2", children: [_jsx("span", { children: permissionDescriptions[permission] }), ' ', _jsx("code", { className: "break-all", children: permission })] }, permission))) })] }, selected.id)) : null] }));
|
|
70
|
+
}
|
|
71
|
+
export function GrantForm(props) {
|
|
72
|
+
const prefix = useId();
|
|
73
|
+
const [draft, setDraft] = useState({
|
|
74
|
+
type: 'email',
|
|
75
|
+
email: '',
|
|
76
|
+
group: '',
|
|
77
|
+
provider: '',
|
|
78
|
+
roleId: '',
|
|
79
|
+
});
|
|
80
|
+
const [errors, setErrors] = useState({});
|
|
81
|
+
const [chosenRole, setChosenRole] = useState(false);
|
|
82
|
+
const roles = scopeRoles(props.catalogue.roles, props.project);
|
|
83
|
+
const suggested = props.project === null
|
|
84
|
+
? ''
|
|
85
|
+
: (roles.find((role) => role.isSystem && role.key === 'project_developer')?.id ?? '');
|
|
86
|
+
const roleId = chosenRole ? draft.roleId : suggested;
|
|
87
|
+
const provider = props.providers.length === 1 ? props.providers[0].id : draft.provider;
|
|
88
|
+
const current = { ...draft, roleId, provider };
|
|
89
|
+
const selectedRole = roles.find((role) => role.id === roleId);
|
|
90
|
+
const selectedProvider = props.providers.find((item) => item.id === provider);
|
|
91
|
+
const field = (name) => ({
|
|
92
|
+
id: `${prefix}-${name}`,
|
|
93
|
+
'aria-invalid': !!errors[name],
|
|
94
|
+
'aria-describedby': `${prefix}-${name}-help${errors[name] ? ` ${prefix}-${name}-error` : ''}`,
|
|
95
|
+
});
|
|
96
|
+
const update = (patch) => {
|
|
97
|
+
setDraft({ ...draft, ...patch });
|
|
98
|
+
setErrors({});
|
|
99
|
+
};
|
|
100
|
+
const rolesReady = props.catalogue.status === 'forbidden' ||
|
|
101
|
+
(props.catalogue.status === 'ready' && roles.length > 0);
|
|
102
|
+
return (_jsxs("form", { noValidate: true, className: "my-6 grid max-w-5xl items-start gap-x-6 gap-y-4 lg:grid-cols-2", onSubmit: (event) => {
|
|
103
|
+
event.preventDefault();
|
|
104
|
+
if (props.busy || !rolesReady)
|
|
105
|
+
return;
|
|
106
|
+
const result = grantBody(current);
|
|
107
|
+
const invalid = result.errors ?? {};
|
|
108
|
+
if (draft.type === 'email' &&
|
|
109
|
+
event.currentTarget.querySelector('[name="email"]')?.validity
|
|
110
|
+
.typeMismatch)
|
|
111
|
+
invalid['email'] = 'Enter a valid sign-in email address.';
|
|
112
|
+
if (draft.type === 'group' && !selectedProvider)
|
|
113
|
+
invalid['provider'] = provider
|
|
114
|
+
? 'This provider is no longer available. Choose another provider.'
|
|
115
|
+
: 'Choose a sign-in provider.';
|
|
116
|
+
if (props.catalogue.status === 'ready' && !selectedRole)
|
|
117
|
+
invalid['roleId'] = 'Choose a role to review this grant.';
|
|
118
|
+
setErrors(invalid);
|
|
119
|
+
const first = ['email', 'provider', 'group', 'roleId'].find((name) => invalid[name]);
|
|
120
|
+
if (first) {
|
|
121
|
+
event.currentTarget.querySelector(`[id="${prefix}-${first}"]`)?.focus();
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (result.body)
|
|
125
|
+
void props.submit(result.body);
|
|
126
|
+
}, children: [_jsx("p", { className: "lg:col-span-2", children: "Give a person or a sign-in group a role." }), _jsxs("div", { className: "lg:col-span-2", children: [_jsxs("p", { className: "font-semibold", children: ["Access to:", ' ', props.project === null
|
|
127
|
+
? `Organization · ${props.organization}`
|
|
128
|
+
: `Project · ${props.project}`] }), _jsx("p", { className: "text-sm text-neutral-600", children: props.project === null
|
|
129
|
+
? 'Organization roles can give access across projects. To give a development group access, choose a project.'
|
|
130
|
+
: 'This grant applies to this project.' }), props.project === null ? (_jsx("a", { className: "underline", href: "#/projects", children: "Choose a project" })) : null] }), _jsxs("fieldset", { className: "grid min-w-0 gap-2 lg:col-span-2", children: [_jsx("legend", { className: "font-semibold", children: "Who gets access" }), ['email', 'group'].map((type) => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { id: `${prefix}-${type}-radio`, type: "radio", name: "type", value: type, checked: draft.type === type, disabled: type === 'group' && (props.providerStatus !== 'ready' || !props.providers.length), "aria-describedby": type === 'group' ? `${prefix}-provider-status` : undefined, onChange: () => update({ type }) }), _jsx(Label, { htmlFor: `${prefix}-${type}-radio`, children: type === 'email' ? 'Person (email)' : 'Group (from your sign-in provider)' })] }, type)))] }), _jsx("div", { id: `${prefix}-provider-status`, className: "lg:col-span-2", children: props.providerStatus === 'error' ? (_jsxs(_Fragment, { children: [_jsx("p", { role: "alert", children: "Sign-in providers could not be loaded. Try again." }), _jsx(Button, { type: "button", variant: "outline", onClick: props.retry, children: "Retry sign-in providers" })] })) : props.providerStatus === 'loading' ? (_jsx("p", { children: "Loading sign-in providers\u2026" })) : !props.providers.length ? (_jsx("p", { children: "Group access needs a sign-in provider that sends groups. Grant access to individual people instead." })) : null }), draft.type === 'email' ? (_jsx(FormField, { id: `${prefix}-email`, label: "Email address", help: "Use the person's sign-in email. Email matching ignores capitalization. Their provider must verify the email and allow its domain.", note: "This creates an access rule. No invitation email is sent.", error: errors['email'], children: _jsx(Input, { ...field('email'), type: "email", name: "email", autoComplete: "email", placeholder: "alex@acme-company.example", value: draft.email, onChange: (event) => update({ email: event.target.value }) }) })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "grid min-w-0 items-start gap-x-6 gap-y-4 lg:col-span-2 lg:grid-cols-2", children: props.providers.length === 1 ? (_jsxs("p", { children: ["Members signing in with ", selectedProvider?.displayName] })) : (_jsx(FormField, { id: `${prefix}-provider`, label: "Sign-in provider", help: "Choose the provider members use to sign in to Package Broker.", error: errors['provider'], children: _jsxs(Select, { ...field('provider'), name: "provider", value: provider, onChange: (event) => update({ provider: event.target.value }), children: [_jsx("option", { value: "", children: "Choose a provider" }), props.providers.map((item) => (_jsx("option", { value: item.id, children: item.displayName }, item.id)))] }) })) }), _jsx(FormField, { id: `${prefix}-group`, label: "Group value", help: "Use the exact group value sent by this provider. A group email works only if the provider sends that email as a group value.", note: "Package Broker cannot check whether this group exists. Ask a member to sign in and confirm their access after saving.", error: errors['group'], children: _jsx(Input, { ...field('group'), name: "group", value: draft.group, autoComplete: "off", spellCheck: false, onChange: (event) => update({ group: event.target.value }) }) })] })), _jsx(RolePicker, { catalogue: props.catalogue, project: props.project, id: `${prefix}-roleId`, value: roleId, onChange: (value) => {
|
|
131
|
+
setChosenRole(true);
|
|
132
|
+
update({ roleId: value });
|
|
133
|
+
}, error: errors['roleId'], retry: props.retry }), _jsxs("div", { "aria-live": "polite", className: "min-w-0 break-words rounded border p-3 lg:col-span-2", children: [_jsx("p", { children: grantSummary(current, selectedRole, selectedProvider, props.project, props.organization) }), draft.type === 'group' ? (_jsx("p", { className: "text-sm", children: "Applies when the provider reports this exact group value." })) : null] }), _jsx("div", { className: "flex flex-col items-start sm:flex-row lg:col-span-2", children: _jsx(Button, { className: "w-full sm:w-auto lg:w-auto", type: "submit", disabled: props.busy ||
|
|
134
|
+
!rolesReady ||
|
|
135
|
+
(draft.type === 'group' &&
|
|
136
|
+
(props.providerStatus !== 'ready' || !props.providers.length)), children: "Create grant" }) })] }));
|
|
137
|
+
}
|
|
138
|
+
export function ChangeRoleForm({ catalogue, project, currentRole, busy, retry, submit, }) {
|
|
139
|
+
const id = useId();
|
|
140
|
+
const [value, setValue] = useState(currentRole);
|
|
141
|
+
const roles = scopeRoles(catalogue.roles, project);
|
|
142
|
+
const valid = !!value &&
|
|
143
|
+
(catalogue.status === 'forbidden' ||
|
|
144
|
+
(catalogue.status === 'ready' && roles.some((role) => role.id === value)));
|
|
145
|
+
return (_jsxs("form", { className: "grid max-w-5xl items-start gap-x-6 gap-y-4 lg:grid-cols-2", onSubmit: (event) => {
|
|
146
|
+
event.preventDefault();
|
|
147
|
+
if (!busy && valid)
|
|
148
|
+
void submit(value);
|
|
149
|
+
}, children: [_jsx("p", { className: "lg:col-span-2", children: "To change who this grant applies to, create a new grant and revoke this one." }), _jsx(RolePicker, { id: id, catalogue: catalogue, project: project, value: value, onChange: setValue, retry: retry }), _jsx("p", { "aria-live": "polite", className: "min-w-0 break-words lg:col-span-2", children: roles.find((role) => role.id === value)?.name
|
|
150
|
+
? `Save ${roles.find((role) => role.id === value).name} ${project === null ? 'for the organization' : `on project ${project}`}.`
|
|
151
|
+
: 'Choose a role to review this grant.' }), _jsx("div", { className: "flex flex-col items-start sm:flex-row lg:col-span-2", children: _jsx(Button, { className: "w-full sm:w-auto lg:w-auto", type: "submit", disabled: busy || !valid, children: "Save role" }) })] }));
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=grant-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grant-form.js","sourceRoot":"","sources":["../../../src/pages/access/grant-form.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-descriptions.d.ts","sourceRoot":"","sources":["../../../src/pages/access/permission-descriptions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkCzD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export const permissionDescriptions = {
|
|
2
|
+
'org:read': 'Read organization details',
|
|
3
|
+
'org:settings:write': 'Change organization settings',
|
|
4
|
+
'org:users:read': 'Read organization users',
|
|
5
|
+
'org:users:write': 'Manage organization users',
|
|
6
|
+
'org:roles:read': 'Read organization roles',
|
|
7
|
+
'org:roles:write': 'Manage organization roles',
|
|
8
|
+
'org:grants:read': 'Read organization grants',
|
|
9
|
+
'org:grants:write': 'Manage organization grants',
|
|
10
|
+
'org:projects:create': 'Add projects',
|
|
11
|
+
'org:projects:archive': 'Archive projects',
|
|
12
|
+
'org:sources:read': 'Read organization sources',
|
|
13
|
+
'org:sources:write': 'Manage organization sources',
|
|
14
|
+
'org:tokens:read': 'Read organization tokens',
|
|
15
|
+
'org:tokens:revoke': 'Revoke organization tokens',
|
|
16
|
+
'org:service-principals:write': 'Manage service principals',
|
|
17
|
+
'org:packages:manage': 'Manage all packages',
|
|
18
|
+
'org:import:write': 'Import runs: create and read',
|
|
19
|
+
'org:import:approve': 'Approve and apply import runs',
|
|
20
|
+
'org:audit:read': 'Read organization audit records',
|
|
21
|
+
'project:read': 'Read project details',
|
|
22
|
+
'project:settings:write': 'Change project settings',
|
|
23
|
+
'project:grants:read': 'Read project grants',
|
|
24
|
+
'project:grants:write': 'Manage project grants',
|
|
25
|
+
'project:packages:read': 'Read project packages',
|
|
26
|
+
'project:packages:write': 'Publish project packages',
|
|
27
|
+
'project:packages:manage': 'Manage project packages',
|
|
28
|
+
'project:sources:read': 'Read project sources',
|
|
29
|
+
'project:sources:write': 'Manage project sources',
|
|
30
|
+
'project:service-principals:write': 'Manage project service principals',
|
|
31
|
+
'project:tokens:create': 'Issue project tokens',
|
|
32
|
+
'project:tokens:read': 'Read project tokens',
|
|
33
|
+
'project:tokens:revoke': 'Revoke project tokens',
|
|
34
|
+
'project:audit:read': 'Read project audit records',
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=permission-descriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-descriptions.js","sourceRoot":"","sources":["../../../src/pages/access/permission-descriptions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,UAAU,EAAE,2BAA2B;IACvC,oBAAoB,EAAE,8BAA8B;IACpD,gBAAgB,EAAE,yBAAyB;IAC3C,iBAAiB,EAAE,2BAA2B;IAC9C,gBAAgB,EAAE,yBAAyB;IAC3C,iBAAiB,EAAE,2BAA2B;IAC9C,iBAAiB,EAAE,0BAA0B;IAC7C,kBAAkB,EAAE,4BAA4B;IAChD,qBAAqB,EAAE,cAAc;IACrC,sBAAsB,EAAE,kBAAkB;IAC1C,kBAAkB,EAAE,2BAA2B;IAC/C,mBAAmB,EAAE,6BAA6B;IAClD,iBAAiB,EAAE,0BAA0B;IAC7C,mBAAmB,EAAE,4BAA4B;IACjD,8BAA8B,EAAE,2BAA2B;IAC3D,qBAAqB,EAAE,qBAAqB;IAC5C,kBAAkB,EAAE,8BAA8B;IAClD,oBAAoB,EAAE,+BAA+B;IACrD,gBAAgB,EAAE,iCAAiC;IACnD,cAAc,EAAE,sBAAsB;IACtC,wBAAwB,EAAE,yBAAyB;IACnD,qBAAqB,EAAE,qBAAqB;IAC5C,sBAAsB,EAAE,uBAAuB;IAC/C,uBAAuB,EAAE,uBAAuB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,yBAAyB,EAAE,yBAAyB;IACpD,sBAAsB,EAAE,sBAAsB;IAC9C,uBAAuB,EAAE,wBAAwB;IACjD,kCAAkC,EAAE,mCAAmC;IACvE,uBAAuB,EAAE,sBAAsB;IAC/C,qBAAqB,EAAE,qBAAqB;IAC5C,uBAAuB,EAAE,uBAAuB;IAChD,oBAAoB,EAAE,4BAA4B;CACnD,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { operations } from '../../api-types.js';
|
|
2
|
+
import type { ShellServices } from '../../auth.js';
|
|
3
|
+
export type Role = operations['listRoles']['responses'][200]['content']['application/json']['items'][number];
|
|
4
|
+
export type Provider = operations['listAuthProviders']['responses'][200]['content']['application/json']['providers'][number];
|
|
5
|
+
export type Catalogue = {
|
|
6
|
+
roles: Role[];
|
|
7
|
+
status: 'ready' | 'loading' | 'forbidden' | 'error';
|
|
8
|
+
};
|
|
9
|
+
export declare function loadRoleCatalogue(client: ShellServices['client']): Promise<Catalogue>;
|
|
10
|
+
export declare const scopeRoles: (roles: Role[], project: string | null) => {
|
|
11
|
+
id: string;
|
|
12
|
+
isSystem: boolean;
|
|
13
|
+
key: string;
|
|
14
|
+
name: string;
|
|
15
|
+
permissions: string[];
|
|
16
|
+
protectsLastHolder: boolean;
|
|
17
|
+
revision: number;
|
|
18
|
+
scope: "organization" | "project";
|
|
19
|
+
}[];
|
|
20
|
+
export declare const systemDescriptions: Record<string, string>;
|
|
21
|
+
export declare const roleDescription: (role: Role) => string;
|
|
22
|
+
//# sourceMappingURL=role-catalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-catalogue.d.ts","sourceRoot":"","sources":["../../../src/pages/access/role-catalogue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,MAAM,MAAM,IAAI,GACd,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5F,MAAM,MAAM,QAAQ,GAClB,UAAU,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AACxG,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;CAAE,CAAC;AAC/F,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAa3F;AAQD,eAAO,MAAM,UAAU,GAAI,OAAO,IAAI,EAAE,EAAE,SAAS,MAAM,GAAG,IAAI;;;;;;;;;GAO1D,CAAC;AACP,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASrD,CAAC;AACF,eAAO,MAAM,eAAe,GAAI,MAAM,IAAI,WAEc,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export async function loadRoleCatalogue(client) {
|
|
2
|
+
const roles = [];
|
|
3
|
+
const seen = new Set();
|
|
4
|
+
let after;
|
|
5
|
+
do {
|
|
6
|
+
const result = await client.request('get', '/_pb/roles', { query: { limit: '50', after } });
|
|
7
|
+
if (!result.ok)
|
|
8
|
+
return { roles: [], status: result.status === 403 ? 'forbidden' : 'error' };
|
|
9
|
+
roles.push(...result.data.items);
|
|
10
|
+
after = result.data.next ?? undefined;
|
|
11
|
+
if (after && seen.has(after))
|
|
12
|
+
return { roles: [], status: 'error' };
|
|
13
|
+
if (after)
|
|
14
|
+
seen.add(after);
|
|
15
|
+
} while (after);
|
|
16
|
+
return { roles, status: 'ready' };
|
|
17
|
+
}
|
|
18
|
+
const order = [
|
|
19
|
+
'project_developer',
|
|
20
|
+
'project_auditor',
|
|
21
|
+
'project_owner',
|
|
22
|
+
'organization_auditor',
|
|
23
|
+
'organization_admin',
|
|
24
|
+
];
|
|
25
|
+
export const scopeRoles = (roles, project) => roles
|
|
26
|
+
.filter((role) => role.scope === (project === null ? 'organization' : 'project'))
|
|
27
|
+
.sort((a, b) => {
|
|
28
|
+
const rank = (role) => role.isSystem && order.includes(role.key) ? order.indexOf(role.key) : order.length;
|
|
29
|
+
return rank(a) - rank(b) || a.name.localeCompare(b.name);
|
|
30
|
+
});
|
|
31
|
+
export const systemDescriptions = {
|
|
32
|
+
project_developer: 'Read packages, view sources and issue project tokens; includes publish permission.',
|
|
33
|
+
project_auditor: 'View project details, grants, packages, sources, tokens and audit records.',
|
|
34
|
+
project_owner: 'Manage project settings, access, packages, sources, service principals and tokens.',
|
|
35
|
+
organization_auditor: 'View organization records and project records across the organization.',
|
|
36
|
+
organization_admin: 'Manage the organization and all projects, including users, roles, grants and packages.',
|
|
37
|
+
};
|
|
38
|
+
export const roleDescription = (role) => (role.isSystem && systemDescriptions[role.key]) ||
|
|
39
|
+
`Custom role · ${role.permissions.length} permissions`;
|
|
40
|
+
//# sourceMappingURL=role-catalogue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-catalogue.js","sourceRoot":"","sources":["../../../src/pages/access/role-catalogue.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAA+B;IACrE,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,KAAyB,CAAC;IAC9B,GAAG,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5F,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;QACtC,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACpE,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,QAAQ,KAAK,EAAE;IAChB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AACD,MAAM,KAAK,GAAG;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,sBAAsB;IACtB,oBAAoB;CACrB,CAAC;AACF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,OAAsB,EAAE,EAAE,CAClE,KAAK;KACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;KAChF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IACb,MAAM,IAAI,GAAG,CAAC,IAAU,EAAE,EAAE,CAC1B,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACrF,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AACP,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,iBAAiB,EACf,oFAAoF;IACtF,eAAe,EAAE,4EAA4E;IAC7F,aAAa,EACX,oFAAoF;IACtF,oBAAoB,EAAE,wEAAwE;IAC9F,kBAAkB,EAChB,wFAAwF;CAC3F,CAAC;AACF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,EAAE,CAC5C,CAAC,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,iBAAiB,IAAI,CAAC,WAAW,CAAC,MAAM,cAAc,CAAC"}
|
package/dist/pages/access.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Catalogue, type Provider } from './access/role-catalogue.js';
|
|
1
2
|
import type { operations } from '../api-types.js';
|
|
2
3
|
import { type ShellServices, type ReplayResult } from '../auth.js';
|
|
3
4
|
import { type ManagementQuery } from './management.js';
|
|
@@ -21,6 +22,10 @@ export declare const buildAccessHash: (query: AccessQuery) => string;
|
|
|
21
22
|
interface AccessState {
|
|
22
23
|
query: AccessQuery;
|
|
23
24
|
roles: Role[];
|
|
25
|
+
catalogue: Catalogue;
|
|
26
|
+
providers: Provider[];
|
|
27
|
+
providerStatus: 'ready' | 'loading' | 'error';
|
|
28
|
+
organizationName: string;
|
|
24
29
|
grants: Grant[];
|
|
25
30
|
next: string | null;
|
|
26
31
|
organization: string[];
|
|
@@ -50,6 +55,7 @@ export declare function createAccessController(services: ShellServices): {
|
|
|
50
55
|
snapshot: () => AccessState;
|
|
51
56
|
subscribe: (listener: () => void) => () => void;
|
|
52
57
|
load: (query: AccessQuery, notice?: string | null) => Promise<void>;
|
|
58
|
+
loadFormOptions: () => Promise<void>;
|
|
53
59
|
createGrant(body: GrantInput): Promise<void>;
|
|
54
60
|
changeGrant(id: string, roleId: string): Promise<void>;
|
|
55
61
|
revoke(id: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/pages/access.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAWhF,OAAO,EAWL,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,IAAI,GACP,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5F,KAAK,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC1F,KAAK,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACxF,KAAK,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC1F,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,WAA+C,CAAC;AAC/F,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,WACoC,CAAC;AACvF,UAAU,WAAW;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW;;;;;;;;;;;;;;EAkBjD;AACD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa;;;
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/pages/access.tsx"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE9F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAWhF,OAAO,EAWL,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,IAAI,GACP,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5F,KAAK,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC1F,KAAK,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACxF,KAAK,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC1F,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,WAA+C,CAAC;AAC/F,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,WACoC,CAAC;AACvF,UAAU,WAAW;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,cAAc,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW;;;;;;;;;;;;;;EAkBjD;AACD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa;;;kBAsCjC,WAAW,WAAU,MAAM,GAAG,IAAI,KAAU,OAAO,CAAC,IAAI,CAAC;;sBAsJ1D,UAAU;oBAiCZ,MAAM,UAAU,MAAM;eAsB3B,MAAM;qBAiBA,SAAS;mBAMX,MAAM,QAAQ,WAAW;mBAWzB,MAAM;qBAUJ,YAAY;;EAuBtC;AACD,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAElE,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,UAAU,GACX,EAAE;IACD,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;CAC9B,+BAwQA;AACD,wBAAgB,UAAU,gCA2BzB"}
|