@portaidentity/cli 1.7.3 → 1.8.0
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/CHANGELOG.md +5 -0
- package/README.md +125 -105
- package/dist/admin/admin-date-time.d.ts +6 -0
- package/dist/admin/admin-date-time.d.ts.map +1 -0
- package/dist/admin/admin-date-time.js +33 -0
- package/dist/admin/admin-date-time.js.map +1 -0
- package/dist/admin/application-client-features.d.ts +38 -0
- package/dist/admin/application-client-features.d.ts.map +1 -0
- package/dist/admin/application-client-features.js +545 -0
- package/dist/admin/application-client-features.js.map +1 -0
- package/dist/admin/application-controller.d.ts +58 -0
- package/dist/admin/application-controller.d.ts.map +1 -0
- package/dist/admin/application-controller.js +286 -0
- package/dist/admin/application-controller.js.map +1 -0
- package/dist/admin/application-dialogs.d.ts +91 -0
- package/dist/admin/application-dialogs.d.ts.map +1 -0
- package/dist/admin/application-dialogs.js +250 -0
- package/dist/admin/application-dialogs.js.map +1 -0
- package/dist/admin/application-rbac-controller.d.ts +56 -0
- package/dist/admin/application-rbac-controller.d.ts.map +1 -0
- package/dist/admin/application-rbac-controller.js +280 -0
- package/dist/admin/application-rbac-controller.js.map +1 -0
- package/dist/admin/application-rbac-features.d.ts +51 -0
- package/dist/admin/application-rbac-features.d.ts.map +1 -0
- package/dist/admin/application-rbac-features.js +175 -0
- package/dist/admin/application-rbac-features.js.map +1 -0
- package/dist/admin/application-rbac-workspace.d.ts +62 -0
- package/dist/admin/application-rbac-workspace.d.ts.map +1 -0
- package/dist/admin/application-rbac-workspace.js +344 -0
- package/dist/admin/application-rbac-workspace.js.map +1 -0
- package/dist/admin/application-runtime.d.ts +44 -0
- package/dist/admin/application-runtime.d.ts.map +1 -0
- package/dist/admin/application-runtime.js +183 -0
- package/dist/admin/application-runtime.js.map +1 -0
- package/dist/admin/application-service.d.ts +39 -0
- package/dist/admin/application-service.d.ts.map +1 -0
- package/dist/admin/application-service.js +248 -0
- package/dist/admin/application-service.js.map +1 -0
- package/dist/admin/application-state.d.ts +109 -0
- package/dist/admin/application-state.d.ts.map +1 -0
- package/dist/admin/application-state.js +3 -0
- package/dist/admin/application-state.js.map +1 -0
- package/dist/admin/application-workspace.d.ts +77 -0
- package/dist/admin/application-workspace.d.ts.map +1 -0
- package/dist/admin/application-workspace.js +302 -0
- package/dist/admin/application-workspace.js.map +1 -0
- package/dist/admin/application.d.ts +88 -0
- package/dist/admin/application.d.ts.map +1 -0
- package/dist/admin/application.js +932 -0
- package/dist/admin/application.js.map +1 -0
- package/dist/admin/client-authentication-dialog.d.ts +77 -0
- package/dist/admin/client-authentication-dialog.d.ts.map +1 -0
- package/dist/admin/client-authentication-dialog.js +217 -0
- package/dist/admin/client-authentication-dialog.js.map +1 -0
- package/dist/admin/client-controller.d.ts +58 -0
- package/dist/admin/client-controller.d.ts.map +1 -0
- package/dist/admin/client-controller.js +462 -0
- package/dist/admin/client-controller.js.map +1 -0
- package/dist/admin/client-credential-dialogs.d.ts +36 -0
- package/dist/admin/client-credential-dialogs.d.ts.map +1 -0
- package/dist/admin/client-credential-dialogs.js +145 -0
- package/dist/admin/client-credential-dialogs.js.map +1 -0
- package/dist/admin/client-dialogs.d.ts +64 -0
- package/dist/admin/client-dialogs.d.ts.map +1 -0
- package/dist/admin/client-dialogs.js +110 -0
- package/dist/admin/client-dialogs.js.map +1 -0
- package/dist/admin/client-form-scroller.d.ts +17 -0
- package/dist/admin/client-form-scroller.d.ts.map +1 -0
- package/dist/admin/client-form-scroller.js +67 -0
- package/dist/admin/client-form-scroller.js.map +1 -0
- package/dist/admin/client-registration-dialog.d.ts +27 -0
- package/dist/admin/client-registration-dialog.d.ts.map +1 -0
- package/dist/admin/client-registration-dialog.js +195 -0
- package/dist/admin/client-registration-dialog.js.map +1 -0
- package/dist/admin/client-service.d.ts +41 -0
- package/dist/admin/client-service.d.ts.map +1 -0
- package/dist/admin/client-service.js +484 -0
- package/dist/admin/client-service.js.map +1 -0
- package/dist/admin/client-state.d.ts +157 -0
- package/dist/admin/client-state.d.ts.map +1 -0
- package/dist/admin/client-state.js +3 -0
- package/dist/admin/client-state.js.map +1 -0
- package/dist/admin/client-workspace.d.ts +88 -0
- package/dist/admin/client-workspace.d.ts.map +1 -0
- package/dist/admin/client-workspace.js +484 -0
- package/dist/admin/client-workspace.js.map +1 -0
- package/dist/admin/delete-confirmation-layout.d.ts +38 -0
- package/dist/admin/delete-confirmation-layout.d.ts.map +1 -0
- package/dist/admin/delete-confirmation-layout.js +52 -0
- package/dist/admin/delete-confirmation-layout.js.map +1 -0
- package/dist/admin/index.d.ts +64 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +31 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/organization-controller.d.ts +77 -0
- package/dist/admin/organization-controller.d.ts.map +1 -0
- package/dist/admin/organization-controller.js +472 -0
- package/dist/admin/organization-controller.js.map +1 -0
- package/dist/admin/organization-dialogs.d.ts +63 -0
- package/dist/admin/organization-dialogs.d.ts.map +1 -0
- package/dist/admin/organization-dialogs.js +303 -0
- package/dist/admin/organization-dialogs.js.map +1 -0
- package/dist/admin/organization-service.d.ts +110 -0
- package/dist/admin/organization-service.d.ts.map +1 -0
- package/dist/admin/organization-service.js +548 -0
- package/dist/admin/organization-service.js.map +1 -0
- package/dist/admin/organization-workspace.d.ts +29 -0
- package/dist/admin/organization-workspace.d.ts.map +1 -0
- package/dist/admin/organization-workspace.js +421 -0
- package/dist/admin/organization-workspace.js.map +1 -0
- package/dist/admin/portability-controller.d.ts +83 -0
- package/dist/admin/portability-controller.d.ts.map +1 -0
- package/dist/admin/portability-controller.js +466 -0
- package/dist/admin/portability-controller.js.map +1 -0
- package/dist/admin/portability-service.d.ts +31 -0
- package/dist/admin/portability-service.d.ts.map +1 -0
- package/dist/admin/portability-service.js +51 -0
- package/dist/admin/portability-service.js.map +1 -0
- package/dist/admin/portability-state.d.ts +88 -0
- package/dist/admin/portability-state.d.ts.map +1 -0
- package/dist/admin/portability-state.js +3 -0
- package/dist/admin/portability-state.js.map +1 -0
- package/dist/admin/portability-workspace.d.ts +78 -0
- package/dist/admin/portability-workspace.d.ts.map +1 -0
- package/dist/admin/portability-workspace.js +337 -0
- package/dist/admin/portability-workspace.js.map +1 -0
- package/dist/admin/presentation.d.ts +46 -0
- package/dist/admin/presentation.d.ts.map +1 -0
- package/dist/admin/presentation.js +271 -0
- package/dist/admin/presentation.js.map +1 -0
- package/dist/admin/rbac-dialogs.d.ts +73 -0
- package/dist/admin/rbac-dialogs.d.ts.map +1 -0
- package/dist/admin/rbac-dialogs.js +345 -0
- package/dist/admin/rbac-dialogs.js.map +1 -0
- package/dist/admin/rbac-service.d.ts +47 -0
- package/dist/admin/rbac-service.d.ts.map +1 -0
- package/dist/admin/rbac-service.js +258 -0
- package/dist/admin/rbac-service.js.map +1 -0
- package/dist/admin/rbac-state.d.ts +129 -0
- package/dist/admin/rbac-state.d.ts.map +1 -0
- package/dist/admin/rbac-state.js +136 -0
- package/dist/admin/rbac-state.js.map +1 -0
- package/dist/admin/selectable-read-only-input.d.ts +18 -0
- package/dist/admin/selectable-read-only-input.d.ts.map +1 -0
- package/dist/admin/selectable-read-only-input.js +24 -0
- package/dist/admin/selectable-read-only-input.js.map +1 -0
- package/dist/admin/session-service.d.ts +169 -0
- package/dist/admin/session-service.d.ts.map +1 -0
- package/dist/admin/session-service.js +353 -0
- package/dist/admin/session-service.js.map +1 -0
- package/dist/admin/state.d.ts +301 -0
- package/dist/admin/state.d.ts.map +1 -0
- package/dist/admin/state.js +10 -0
- package/dist/admin/state.js.map +1 -0
- package/dist/admin/system-config-controller.d.ts +58 -0
- package/dist/admin/system-config-controller.d.ts.map +1 -0
- package/dist/admin/system-config-controller.js +218 -0
- package/dist/admin/system-config-controller.js.map +1 -0
- package/dist/admin/system-config-service.d.ts +54 -0
- package/dist/admin/system-config-service.d.ts.map +1 -0
- package/dist/admin/system-config-service.js +180 -0
- package/dist/admin/system-config-service.js.map +1 -0
- package/dist/admin/system-config-state.d.ts +77 -0
- package/dist/admin/system-config-state.d.ts.map +1 -0
- package/dist/admin/system-config-state.js +78 -0
- package/dist/admin/system-config-state.js.map +1 -0
- package/dist/admin/system-config-workspace.d.ts +47 -0
- package/dist/admin/system-config-workspace.d.ts.map +1 -0
- package/dist/admin/system-config-workspace.js +217 -0
- package/dist/admin/system-config-workspace.js.map +1 -0
- package/dist/admin/user-controller-types.d.ts +67 -0
- package/dist/admin/user-controller-types.d.ts.map +1 -0
- package/dist/admin/user-controller-types.js +3 -0
- package/dist/admin/user-controller-types.js.map +1 -0
- package/dist/admin/user-controller.d.ts +6 -0
- package/dist/admin/user-controller.d.ts.map +1 -0
- package/dist/admin/user-controller.js +674 -0
- package/dist/admin/user-controller.js.map +1 -0
- package/dist/admin/user-dialog-fields.d.ts +44 -0
- package/dist/admin/user-dialog-fields.d.ts.map +1 -0
- package/dist/admin/user-dialog-fields.js +130 -0
- package/dist/admin/user-dialog-fields.js.map +1 -0
- package/dist/admin/user-dialogs.d.ts +66 -0
- package/dist/admin/user-dialogs.d.ts.map +1 -0
- package/dist/admin/user-dialogs.js +374 -0
- package/dist/admin/user-dialogs.js.map +1 -0
- package/dist/admin/user-role-controller.d.ts +82 -0
- package/dist/admin/user-role-controller.d.ts.map +1 -0
- package/dist/admin/user-role-controller.js +337 -0
- package/dist/admin/user-role-controller.js.map +1 -0
- package/dist/admin/user-role-dialog.d.ts +94 -0
- package/dist/admin/user-role-dialog.d.ts.map +1 -0
- package/dist/admin/user-role-dialog.js +265 -0
- package/dist/admin/user-role-dialog.js.map +1 -0
- package/dist/admin/user-service-types.d.ts +100 -0
- package/dist/admin/user-service-types.d.ts.map +1 -0
- package/dist/admin/user-service-types.js +3 -0
- package/dist/admin/user-service-types.js.map +1 -0
- package/dist/admin/user-service.d.ts +14 -0
- package/dist/admin/user-service.d.ts.map +1 -0
- package/dist/admin/user-service.js +612 -0
- package/dist/admin/user-service.js.map +1 -0
- package/dist/admin/user-state.d.ts +158 -0
- package/dist/admin/user-state.d.ts.map +1 -0
- package/dist/admin/user-state.js +3 -0
- package/dist/admin/user-state.js.map +1 -0
- package/dist/admin/user-workspace.d.ts +65 -0
- package/dist/admin/user-workspace.d.ts.map +1 -0
- package/dist/admin/user-workspace.js +366 -0
- package/dist/admin/user-workspace.js.map +1 -0
- package/dist/auth/browser-flow.d.ts +27 -1
- package/dist/auth/browser-flow.d.ts.map +1 -1
- package/dist/auth/browser-flow.js +55 -33
- package/dist/auth/browser-flow.js.map +1 -1
- package/dist/auth/callback-server.d.ts.map +1 -1
- package/dist/auth/callback-server.js +5 -9
- package/dist/auth/callback-server.js.map +1 -1
- package/dist/auth/id-token-verifier.d.ts +39 -0
- package/dist/auth/id-token-verifier.d.ts.map +1 -0
- package/dist/auth/id-token-verifier.js +104 -0
- package/dist/auth/id-token-verifier.js.map +1 -0
- package/dist/auth/login-coordinator.d.ts +72 -0
- package/dist/auth/login-coordinator.d.ts.map +1 -0
- package/dist/auth/login-coordinator.js +190 -0
- package/dist/auth/login-coordinator.js.map +1 -0
- package/dist/auth/metadata.d.ts +2 -1
- package/dist/auth/metadata.d.ts.map +1 -1
- package/dist/auth/metadata.js +67 -6
- package/dist/auth/metadata.js.map +1 -1
- package/dist/auth/types.d.ts +14 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/client-factory.d.ts.map +1 -1
- package/dist/client-factory.js +15 -2
- package/dist/client-factory.js.map +1 -1
- package/dist/commands/admin.d.ts +22 -0
- package/dist/commands/admin.d.ts.map +1 -0
- package/dist/commands/admin.js +112 -0
- package/dist/commands/admin.js.map +1 -0
- package/dist/commands/app-claim.d.ts.map +1 -1
- package/dist/commands/app-claim.js +11 -4
- package/dist/commands/app-claim.js.map +1 -1
- package/dist/commands/app-module.d.ts.map +1 -1
- package/dist/commands/app-module.js +61 -12
- package/dist/commands/app-module.js.map +1 -1
- package/dist/commands/app-permission.d.ts.map +1 -1
- package/dist/commands/app-permission.js +66 -24
- package/dist/commands/app-permission.js.map +1 -1
- package/dist/commands/app-role.d.ts.map +1 -1
- package/dist/commands/app-role.js +48 -27
- package/dist/commands/app-role.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +37 -25
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/bulk.d.ts.map +1 -1
- package/dist/commands/bulk.js +9 -2
- package/dist/commands/bulk.js.map +1 -1
- package/dist/commands/client-secret.d.ts.map +1 -1
- package/dist/commands/client-secret.js +12 -6
- package/dist/commands/client-secret.js.map +1 -1
- package/dist/commands/client.d.ts +3 -2
- package/dist/commands/client.d.ts.map +1 -1
- package/dist/commands/client.js +87 -43
- package/dist/commands/client.js.map +1 -1
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +68 -7
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/export.d.ts +6 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +182 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +6 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +142 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/keys.d.ts.map +1 -1
- package/dist/commands/keys.js +11 -4
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +24 -10
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/org.d.ts +2 -4
- package/dist/commands/org.d.ts.map +1 -1
- package/dist/commands/org.js +16 -76
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/user-role.d.ts.map +1 -1
- package/dist/commands/user-role.js +19 -14
- package/dist/commands/user-role.js.map +1 -1
- package/dist/commands/user.d.ts +3 -2
- package/dist/commands/user.d.ts.map +1 -1
- package/dist/commands/user.js +47 -71
- package/dist/commands/user.js.map +1 -1
- package/dist/commands/version.d.ts +1 -1
- package/dist/commands/version.js +1 -1
- package/dist/credential-lock.d.ts +20 -0
- package/dist/credential-lock.d.ts.map +1 -0
- package/dist/credential-lock.js +130 -0
- package/dist/credential-lock.js.map +1 -0
- package/dist/credential-store.d.ts +14 -0
- package/dist/credential-store.d.ts.map +1 -1
- package/dist/credential-store.js +114 -3
- package/dist/credential-store.js.map +1 -1
- package/dist/error-handler.d.ts.map +1 -1
- package/dist/error-handler.js +2 -0
- package/dist/error-handler.js.map +1 -1
- package/dist/global-options.d.ts +8 -0
- package/dist/global-options.d.ts.map +1 -1
- package/dist/global-options.js +19 -8
- package/dist/global-options.js.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts +11 -0
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +25 -6
- package/dist/output.js.map +1 -1
- package/dist/prompt.d.ts +2 -2
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +27 -7
- package/dist/prompt.js.map +1 -1
- package/package.json +7 -3
- package/dist/commands/gui.d.ts +0 -21
- package/dist/commands/gui.d.ts.map +0 -1
- package/dist/commands/gui.js +0 -67
- package/dist/commands/gui.js.map +0 -1
- package/dist/commands/provision.d.ts +0 -47
- package/dist/commands/provision.d.ts.map +0 -1
- package/dist/commands/provision.js +0 -444
- package/dist/commands/provision.js.map +0 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/** Conventional command for exporting selective Porta portability manifests. */
|
|
2
|
+
import { access, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import { createClient } from '../client-factory.js';
|
|
5
|
+
import { handleError } from '../error-handler.js';
|
|
6
|
+
import { info, printJson, success } from '../output.js';
|
|
7
|
+
import { confirm } from '../prompt.js';
|
|
8
|
+
/** Manifest categories accepted by the public portability contract. */
|
|
9
|
+
const CATEGORIES = [
|
|
10
|
+
'organizations',
|
|
11
|
+
'applications_authorization',
|
|
12
|
+
'users_assignments',
|
|
13
|
+
'oidc_clients',
|
|
14
|
+
];
|
|
15
|
+
/** Categories whose records and relationships require an application selection. */
|
|
16
|
+
const APPLICATION_CATEGORIES = new Set([
|
|
17
|
+
'applications_authorization',
|
|
18
|
+
'users_assignments',
|
|
19
|
+
'oidc_clients',
|
|
20
|
+
]);
|
|
21
|
+
/** Application slugs rejected by the server's application domain. */
|
|
22
|
+
const RESERVED_APPLICATION_SLUGS = new Set([
|
|
23
|
+
'admin',
|
|
24
|
+
'api',
|
|
25
|
+
'system',
|
|
26
|
+
'internal',
|
|
27
|
+
'default',
|
|
28
|
+
'health',
|
|
29
|
+
'status',
|
|
30
|
+
]);
|
|
31
|
+
/** Return whether a Node filesystem error represents an absent path. */
|
|
32
|
+
function isMissingFile(error) {
|
|
33
|
+
return error instanceof Error && 'code' in error && error.code === 'ENOENT';
|
|
34
|
+
}
|
|
35
|
+
/** Return whether a slug follows the application identifier contract. */
|
|
36
|
+
function isApplicationSlug(value) {
|
|
37
|
+
return (value.length >= 3 &&
|
|
38
|
+
value.length <= 100 &&
|
|
39
|
+
/^[a-z0-9][a-z0-9-]*[a-z0-9]$/.test(value) &&
|
|
40
|
+
!RESERVED_APPLICATION_SLUGS.has(value));
|
|
41
|
+
}
|
|
42
|
+
/** Reject ambiguous or incomplete export selections before any SDK request. */
|
|
43
|
+
function validateSelection(arguments_) {
|
|
44
|
+
if (Boolean(arguments_.organization) === arguments_.environment) {
|
|
45
|
+
throw new Error('Choose exactly one of --organization or --environment.');
|
|
46
|
+
}
|
|
47
|
+
if (new Set(arguments_.category).size !== arguments_.category.length) {
|
|
48
|
+
throw new Error('Each --category value may be selected only once.');
|
|
49
|
+
}
|
|
50
|
+
const applications = arguments_.application ?? [];
|
|
51
|
+
if (new Set(applications).size !== applications.length) {
|
|
52
|
+
throw new Error('Each --application value may be selected only once.');
|
|
53
|
+
}
|
|
54
|
+
if (!applications.every(isApplicationSlug)) {
|
|
55
|
+
throw new Error('Every --application value must be a valid application slug.');
|
|
56
|
+
}
|
|
57
|
+
const needsApplications = arguments_.category.some((category) => APPLICATION_CATEGORIES.has(category));
|
|
58
|
+
const hasExplicitApplications = applications.length > 0;
|
|
59
|
+
if (needsApplications && hasExplicitApplications === arguments_['all-applications']) {
|
|
60
|
+
throw new Error('Choose exactly one of --application or --all-applications.');
|
|
61
|
+
}
|
|
62
|
+
if (!needsApplications && (hasExplicitApplications || arguments_['all-applications'])) {
|
|
63
|
+
throw new Error('Application selection requires an application-related category.');
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
/** Return whether the output path already exists without hiding unrelated filesystem failures. */
|
|
68
|
+
async function outputExists(path) {
|
|
69
|
+
try {
|
|
70
|
+
await access(path);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (isMissingFile(error))
|
|
75
|
+
return false;
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** Count records in every manifest collection for concise command output. */
|
|
80
|
+
function manifestCounts(manifest) {
|
|
81
|
+
return {
|
|
82
|
+
organizations: manifest.organizations.length,
|
|
83
|
+
applications: manifest.applications.length,
|
|
84
|
+
application_modules: manifest.application_modules.length,
|
|
85
|
+
roles: manifest.roles.length,
|
|
86
|
+
permissions: manifest.permissions.length,
|
|
87
|
+
claim_definitions: manifest.claim_definitions.length,
|
|
88
|
+
role_permission_mappings: manifest.role_permission_mappings.length,
|
|
89
|
+
users: manifest.users.length,
|
|
90
|
+
user_role_assignments: manifest.user_role_assignments.length,
|
|
91
|
+
user_claim_values: manifest.user_claim_values.length,
|
|
92
|
+
clients: manifest.clients.length,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** Build the exact server request from validated command arguments. */
|
|
96
|
+
function manifestRequest(arguments_) {
|
|
97
|
+
return {
|
|
98
|
+
scope: arguments_.organization
|
|
99
|
+
? { kind: 'organization', organization_slug: arguments_.organization }
|
|
100
|
+
: { kind: 'environment' },
|
|
101
|
+
categories: arguments_.category,
|
|
102
|
+
application_selection: {
|
|
103
|
+
all_applications: arguments_['all-applications'],
|
|
104
|
+
application_slugs: arguments_.application ?? [],
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/** Export selected Porta data to one local JSON file. */
|
|
109
|
+
export const exportCommand = {
|
|
110
|
+
command: 'export',
|
|
111
|
+
describe: 'Export a selective Porta manifest',
|
|
112
|
+
builder: (yargs) => yargs
|
|
113
|
+
.command('manifest', 'Export a portability manifest', (command) => command
|
|
114
|
+
.option('organization', {
|
|
115
|
+
type: 'string',
|
|
116
|
+
describe: 'Export one organization by slug',
|
|
117
|
+
})
|
|
118
|
+
.option('environment', {
|
|
119
|
+
type: 'boolean',
|
|
120
|
+
default: false,
|
|
121
|
+
describe: 'Export the complete non-control-plane environment',
|
|
122
|
+
})
|
|
123
|
+
.option('category', {
|
|
124
|
+
type: 'string',
|
|
125
|
+
array: true,
|
|
126
|
+
choices: CATEGORIES,
|
|
127
|
+
demandOption: true,
|
|
128
|
+
describe: 'Manifest category to include; repeat to select more than one',
|
|
129
|
+
})
|
|
130
|
+
.option('application', {
|
|
131
|
+
type: 'string',
|
|
132
|
+
array: true,
|
|
133
|
+
describe: 'Application slug to include; repeat to select more than one',
|
|
134
|
+
})
|
|
135
|
+
.option('all-applications', {
|
|
136
|
+
type: 'boolean',
|
|
137
|
+
default: false,
|
|
138
|
+
describe: 'Include every eligible application',
|
|
139
|
+
})
|
|
140
|
+
.option('output', {
|
|
141
|
+
alias: 'o',
|
|
142
|
+
type: 'string',
|
|
143
|
+
demandOption: true,
|
|
144
|
+
describe: 'Local JSON file to write',
|
|
145
|
+
})
|
|
146
|
+
.option('yes', {
|
|
147
|
+
type: 'boolean',
|
|
148
|
+
default: false,
|
|
149
|
+
describe: 'Replace an existing output file without confirmation',
|
|
150
|
+
})
|
|
151
|
+
.check(validateSelection), async (arguments_) => {
|
|
152
|
+
try {
|
|
153
|
+
const outputPath = resolve(arguments_.output);
|
|
154
|
+
if ((await outputExists(outputPath)) && !arguments_.yes) {
|
|
155
|
+
const replace = await confirm(`Replace existing file ${outputPath}?`);
|
|
156
|
+
if (!replace)
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const response = await createClient(arguments_).exports.manifest(manifestRequest(arguments_));
|
|
160
|
+
await writeFile(outputPath, JSON.stringify(response.manifest, null, 2), 'utf-8');
|
|
161
|
+
const status = {
|
|
162
|
+
path: outputPath,
|
|
163
|
+
filename: response.filename,
|
|
164
|
+
counts: manifestCounts(response.manifest),
|
|
165
|
+
};
|
|
166
|
+
if (arguments_.json) {
|
|
167
|
+
printJson(status);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
success(`Wrote portability manifest to ${outputPath}`);
|
|
171
|
+
for (const [category, count] of Object.entries(status.counts)) {
|
|
172
|
+
info(`${category}: ${count}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
handleError(error, arguments_.verbose);
|
|
177
|
+
}
|
|
178
|
+
})
|
|
179
|
+
.demandCommand(1, 'Please specify the export subcommand: manifest'),
|
|
180
|
+
handler: () => undefined,
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Conventional command for previewing and applying Porta portability manifests. */
|
|
2
|
+
import type { CommandModule } from 'yargs';
|
|
3
|
+
import type { GlobalOptions } from '../global-options.js';
|
|
4
|
+
/** Preview and optionally apply one local portability manifest. */
|
|
5
|
+
export declare const importCommand: CommandModule<GlobalOptions, GlobalOptions>;
|
|
6
|
+
//# sourceMappingURL=import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAKpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAuG1D,mEAAmE;AACnE,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CA0DrE,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/** Conventional command for previewing and applying Porta portability manifests. */
|
|
2
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import { createClient } from '../client-factory.js';
|
|
5
|
+
import { handleError } from '../error-handler.js';
|
|
6
|
+
import { printJson, printTable, success, warn } from '../output.js';
|
|
7
|
+
import { confirm } from '../prompt.js';
|
|
8
|
+
/** Largest local manifest accepted before an SDK request. */
|
|
9
|
+
const MAX_MANIFEST_BYTES = 64 * 1024 * 1024;
|
|
10
|
+
/** Read one bounded JSON document without exposing local filesystem details. */
|
|
11
|
+
async function readManifest(path) {
|
|
12
|
+
let size;
|
|
13
|
+
try {
|
|
14
|
+
size = (await stat(path)).size;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
throw new Error('Unable to read manifest file.');
|
|
18
|
+
}
|
|
19
|
+
if (size > MAX_MANIFEST_BYTES) {
|
|
20
|
+
throw new Error('Manifest file is too large; the limit is 64 MiB.');
|
|
21
|
+
}
|
|
22
|
+
let content;
|
|
23
|
+
try {
|
|
24
|
+
content = await readFile(path, 'utf-8');
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
throw new Error('Unable to read manifest file.');
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const parsed = JSON.parse(content);
|
|
31
|
+
// The SDK type describes the outgoing wire contract. The server remains the single strict
|
|
32
|
+
// validation authority, so the CLI deliberately does not maintain a second manifest schema.
|
|
33
|
+
return parsed;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
throw new Error('Manifest contains invalid JSON.');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Convert a public natural key to stable readable text. */
|
|
40
|
+
function naturalKeyText(naturalKey) {
|
|
41
|
+
return Object.entries(naturalKey)
|
|
42
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
43
|
+
.join(', ');
|
|
44
|
+
}
|
|
45
|
+
/** Print the ordered bounded errors from one rejected operation. */
|
|
46
|
+
function printRejected(result, json) {
|
|
47
|
+
if (json) {
|
|
48
|
+
printJson(result);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
printTable(['Entity', 'Natural key', 'Code'], result.errors.map((error) => [
|
|
52
|
+
error.entity_type,
|
|
53
|
+
naturalKeyText(error.natural_key),
|
|
54
|
+
error.code,
|
|
55
|
+
]));
|
|
56
|
+
}
|
|
57
|
+
process.exitCode = 1;
|
|
58
|
+
}
|
|
59
|
+
/** Print aggregate operation counts without exposing manifest contents. */
|
|
60
|
+
function printSummary(result) {
|
|
61
|
+
printTable(['Entity', 'Created', 'Updated', 'Skipped', 'Rejected'], Object.entries(result.summary).map(([entity, counts]) => [
|
|
62
|
+
entity,
|
|
63
|
+
String(counts.created),
|
|
64
|
+
String(counts.updated),
|
|
65
|
+
String(counts.skipped),
|
|
66
|
+
String(counts.rejected),
|
|
67
|
+
]));
|
|
68
|
+
}
|
|
69
|
+
/** Print a committed result and each generated credential exactly once. */
|
|
70
|
+
function printApplied(result, json) {
|
|
71
|
+
if (json) {
|
|
72
|
+
printJson(result);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
printSummary(result);
|
|
76
|
+
if (result.credentials && result.credentials.length > 0) {
|
|
77
|
+
printTable(['Client ID', 'Label', 'Expires', 'Secret'], result.credentials.map((credential) => [
|
|
78
|
+
credential.client_id,
|
|
79
|
+
credential.label,
|
|
80
|
+
credential.expires_at,
|
|
81
|
+
credential.secret,
|
|
82
|
+
]));
|
|
83
|
+
warn('Client secrets are shown once. Store them securely now.');
|
|
84
|
+
}
|
|
85
|
+
success('Portability manifest imported');
|
|
86
|
+
}
|
|
87
|
+
/** Preview and optionally apply one local portability manifest. */
|
|
88
|
+
export const importCommand = {
|
|
89
|
+
command: 'import',
|
|
90
|
+
describe: 'Import a Porta portability manifest',
|
|
91
|
+
builder: (yargs) => yargs
|
|
92
|
+
.command('manifest [path]', 'Preview and apply a portability manifest', (command) => command
|
|
93
|
+
.positional('path', {
|
|
94
|
+
type: 'string',
|
|
95
|
+
describe: 'Local JSON manifest file',
|
|
96
|
+
})
|
|
97
|
+
.option('mode', {
|
|
98
|
+
type: 'string',
|
|
99
|
+
choices: ['keep-existing', 'update-existing'],
|
|
100
|
+
demandOption: true,
|
|
101
|
+
describe: 'How to handle matching destination records',
|
|
102
|
+
})
|
|
103
|
+
.option('yes', {
|
|
104
|
+
type: 'boolean',
|
|
105
|
+
default: false,
|
|
106
|
+
describe: 'Apply a successful preview without confirmation',
|
|
107
|
+
})
|
|
108
|
+
.check((arguments_) => {
|
|
109
|
+
if (!arguments_.path)
|
|
110
|
+
throw new Error('Manifest path is required.');
|
|
111
|
+
return true;
|
|
112
|
+
}), async (arguments_) => {
|
|
113
|
+
try {
|
|
114
|
+
const manifest = await readManifest(resolve(arguments_.path));
|
|
115
|
+
const client = createClient(arguments_);
|
|
116
|
+
const preview = await client.imports.preview(manifest);
|
|
117
|
+
if (preview.errors.length > 0) {
|
|
118
|
+
printRejected(preview, arguments_.json);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (!arguments_.yes) {
|
|
122
|
+
if (!arguments_.json)
|
|
123
|
+
printSummary(preview);
|
|
124
|
+
const approved = await confirm('Apply this portability plan?');
|
|
125
|
+
if (!approved)
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const applied = await client.imports.apply(manifest, arguments_.mode);
|
|
129
|
+
if (applied.errors.length > 0) {
|
|
130
|
+
printRejected(applied, arguments_.json);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
printApplied(applied, arguments_.json);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
handleError(error, arguments_.verbose);
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
.demandCommand(1, 'Please specify the import subcommand: manifest'),
|
|
140
|
+
handler: () => undefined,
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAsB1D,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CAwGnE,CAAC"}
|
package/dist/commands/keys.js
CHANGED
|
@@ -10,8 +10,13 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { createClient } from '../client-factory.js';
|
|
12
12
|
import { handleError } from '../error-handler.js';
|
|
13
|
-
import { printTable, printJson, success, warn, formatDate, truncate } from '../output.js';
|
|
13
|
+
import { printTable, printJson, success, warn, info, formatDate, truncate } from '../output.js';
|
|
14
14
|
import { confirm } from '../prompt.js';
|
|
15
|
+
/** Print the process-restart boundary that activates a committed signing-key change. */
|
|
16
|
+
function printKeyActivationGuidance() {
|
|
17
|
+
info('Restart every running Porta instance.');
|
|
18
|
+
info('After restarting, run `porta keys list` and verify the committed active signing key.');
|
|
19
|
+
}
|
|
15
20
|
// ---------------------------------------------------------------------------
|
|
16
21
|
// Command
|
|
17
22
|
// ---------------------------------------------------------------------------
|
|
@@ -55,7 +60,8 @@ export const keysCommand = {
|
|
|
55
60
|
printJson(key);
|
|
56
61
|
return;
|
|
57
62
|
}
|
|
58
|
-
success(`
|
|
63
|
+
success(`Added another active signing key without retiring existing active keys: ${key.kid} (${truncate(key.id, 12)})`);
|
|
64
|
+
printKeyActivationGuidance();
|
|
59
65
|
}
|
|
60
66
|
catch (err) {
|
|
61
67
|
handleError(err, argv.verbose);
|
|
@@ -65,7 +71,7 @@ export const keysCommand = {
|
|
|
65
71
|
.command('rotate', 'Rotate signing keys (generate new + retire current active)', (y) => y, async (argv) => {
|
|
66
72
|
try {
|
|
67
73
|
if (!argv.force) {
|
|
68
|
-
const ok = await confirm('Rotate signing keys? This will retire
|
|
74
|
+
const ok = await confirm('Rotate signing keys? This will retire every active key and create one new active key.');
|
|
69
75
|
if (!ok) {
|
|
70
76
|
warn('Aborted');
|
|
71
77
|
return;
|
|
@@ -77,7 +83,8 @@ export const keysCommand = {
|
|
|
77
83
|
printJson(key);
|
|
78
84
|
return;
|
|
79
85
|
}
|
|
80
|
-
success(`
|
|
86
|
+
success(`Retired every active key and created one new active key: ${key.kid}`);
|
|
87
|
+
printKeyActivationGuidance();
|
|
81
88
|
}
|
|
82
89
|
catch (err) {
|
|
83
90
|
handleError(err, argv.verbose);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoB1D,4CAA4C;AAC5C,UAAU,YAAa,SAAQ,aAAa;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,aAAa,EAAE,YAAY,CA6DnE,CAAC"}
|
package/dist/commands/login.js
CHANGED
|
@@ -17,10 +17,13 @@
|
|
|
17
17
|
*
|
|
18
18
|
* @module commands/login
|
|
19
19
|
*/
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
20
|
+
import { authenticateCliSession } from '../auth/login-coordinator.js';
|
|
21
|
+
import { isContainerized } from '../auth/callback-server.js';
|
|
22
|
+
import { loadCredentials, saveCredentialsDurably } from '../credential-store.js';
|
|
22
23
|
import { success } from '../output.js';
|
|
23
24
|
import { handleError } from '../error-handler.js';
|
|
25
|
+
import { confirm, question } from '../prompt.js';
|
|
26
|
+
import { normalizeServerOrigin } from '../global-options.js';
|
|
24
27
|
// ---------------------------------------------------------------------------
|
|
25
28
|
// Constants
|
|
26
29
|
// ---------------------------------------------------------------------------
|
|
@@ -59,15 +62,26 @@ export const loginCommand = {
|
|
|
59
62
|
if (argv.insecure) {
|
|
60
63
|
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
|
61
64
|
}
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
+
const server = normalizeServerOrigin(argv.server);
|
|
66
|
+
const current = loadCredentials();
|
|
67
|
+
const controller = new AbortController();
|
|
68
|
+
const result = await authenticateCliSession({
|
|
69
|
+
server,
|
|
65
70
|
clientId: argv['client-id'],
|
|
66
|
-
noBrowser: argv['no-browser'],
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
+
noBrowser: argv['no-browser'] || isContainerized(),
|
|
72
|
+
currentServer: current ? normalizeServerOrigin(current.server) : undefined,
|
|
73
|
+
persistCredentials: async (credentials) => saveCredentialsDurably(credentials, controller.signal),
|
|
74
|
+
}, {
|
|
75
|
+
presentAuthorizationUrl: async (url) => {
|
|
76
|
+
console.log('Open this URL in your browser to log in:\n');
|
|
77
|
+
console.log(` ${url.toString()}\n`);
|
|
78
|
+
},
|
|
79
|
+
requestManualCallback: async (signal) => question('Paste the callback URL: ', signal),
|
|
80
|
+
confirmCredentialReplacement: async (currentServer, nextServer, signal) => confirm(`Replace credentials for ${currentServer.origin} with ${nextServer.origin}?`, signal),
|
|
81
|
+
}, { signal: controller.signal });
|
|
82
|
+
if (result.status === 'cancelled')
|
|
83
|
+
return;
|
|
84
|
+
success(`Logged in as ${result.identity.email || result.identity.sub}`);
|
|
71
85
|
process.exit(0);
|
|
72
86
|
}
|
|
73
87
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/org.d.ts
CHANGED
|
@@ -6,16 +6,14 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
8
|
* porta org create --name "Acme Corp" [--slug acme-corp] [--locale en]
|
|
9
|
-
* porta org list [--status active|suspended
|
|
9
|
+
* porta org list [--status active|suspended] [--page 1] [--page-size 20]
|
|
10
10
|
* porta org show <id-or-slug>
|
|
11
11
|
* porta org update <id-or-slug> --name "New Name" [--default-locale fr]
|
|
12
12
|
* porta org suspend <id-or-slug>
|
|
13
13
|
* porta org activate <id-or-slug>
|
|
14
|
-
* porta org
|
|
15
|
-
* porta org restore <id-or-slug>
|
|
14
|
+
* porta org delete <id-or-slug>
|
|
16
15
|
* porta org history <id-or-slug>
|
|
17
16
|
* porta org branding <id-or-slug> --primary-color "#..." [--company-name "..."]
|
|
18
|
-
* porta org destroy <id-or-slug>
|
|
19
17
|
*
|
|
20
18
|
* @module commands/org
|
|
21
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA8C1D,sEAAsE;AACtE,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CAoYlE,CAAC"}
|