@affinidi/cli 2.7.0 → 2.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/README.md +2 -2
- package/bin/dev.cmd +1 -1
- package/bin/dev.js +5 -0
- package/bin/run.js +5 -0
- package/dist/commands/generate/app.d.ts +7 -7
- package/dist/commands/generate/app.js +72 -75
- package/dist/commands/generate/app.js.map +1 -1
- package/dist/commands/iam/add-principal.d.ts +3 -3
- package/dist/commands/iam/add-principal.js +27 -31
- package/dist/commands/iam/add-principal.js.map +1 -1
- package/dist/commands/iam/get-policies.d.ts +4 -4
- package/dist/commands/iam/get-policies.js +27 -31
- package/dist/commands/iam/get-policies.js.map +1 -1
- package/dist/commands/iam/list-principals.d.ts +2 -2
- package/dist/commands/iam/list-principals.js +9 -14
- package/dist/commands/iam/list-principals.js.map +1 -1
- package/dist/commands/iam/remove-principal.d.ts +4 -3
- package/dist/commands/iam/remove-principal.js +27 -31
- package/dist/commands/iam/remove-principal.js.map +1 -1
- package/dist/commands/iam/update-policies.d.ts +5 -5
- package/dist/commands/iam/update-policies.js +44 -48
- package/dist/commands/iam/update-policies.js.map +1 -1
- package/dist/commands/login/add-user-to-group.d.ts +4 -4
- package/dist/commands/login/add-user-to-group.js +16 -21
- package/dist/commands/login/add-user-to-group.js.map +1 -1
- package/dist/commands/login/create-config.d.ts +11 -10
- package/dist/commands/login/create-config.js +46 -50
- package/dist/commands/login/create-config.js.map +1 -1
- package/dist/commands/login/create-group.d.ts +3 -3
- package/dist/commands/login/create-group.js +15 -20
- package/dist/commands/login/create-group.js.map +1 -1
- package/dist/commands/login/delete-config.d.ts +2 -2
- package/dist/commands/login/delete-config.js +14 -19
- package/dist/commands/login/delete-config.js.map +1 -1
- package/dist/commands/login/delete-group.d.ts +2 -2
- package/dist/commands/login/delete-group.js +14 -19
- package/dist/commands/login/delete-group.js.map +1 -1
- package/dist/commands/login/export-configs.d.ts +3 -3
- package/dist/commands/login/export-configs.js +21 -27
- package/dist/commands/login/export-configs.js.map +1 -1
- package/dist/commands/login/export-groups.d.ts +3 -3
- package/dist/commands/login/export-groups.js +21 -27
- package/dist/commands/login/export-groups.js.map +1 -1
- package/dist/commands/login/get-config.d.ts +3 -3
- package/dist/commands/login/get-config.js +14 -19
- package/dist/commands/login/get-config.js.map +1 -1
- package/dist/commands/login/get-group.d.ts +3 -3
- package/dist/commands/login/get-group.js +14 -19
- package/dist/commands/login/get-group.js.map +1 -1
- package/dist/commands/login/import-configs.d.ts +3 -3
- package/dist/commands/login/import-configs.js +33 -37
- package/dist/commands/login/import-configs.js.map +1 -1
- package/dist/commands/login/import-groups.d.ts +3 -3
- package/dist/commands/login/import-groups.js +21 -26
- package/dist/commands/login/import-groups.js.map +1 -1
- package/dist/commands/login/list-configs.d.ts +2 -2
- package/dist/commands/login/list-configs.js +7 -11
- package/dist/commands/login/list-configs.js.map +1 -1
- package/dist/commands/login/list-groups.d.ts +2 -2
- package/dist/commands/login/list-groups.js +7 -11
- package/dist/commands/login/list-groups.js.map +1 -1
- package/dist/commands/login/list-users-in-group.d.ts +5 -5
- package/dist/commands/login/list-users-in-group.js +24 -29
- package/dist/commands/login/list-users-in-group.js.map +1 -1
- package/dist/commands/login/remove-user-from-group.d.ts +3 -3
- package/dist/commands/login/remove-user-from-group.js +16 -21
- package/dist/commands/login/remove-user-from-group.js.map +1 -1
- package/dist/commands/login/update-config.d.ts +10 -10
- package/dist/commands/login/update-config.js +40 -45
- package/dist/commands/login/update-config.js.map +1 -1
- package/dist/commands/project/create-project.d.ts +4 -4
- package/dist/commands/project/create-project.js +16 -21
- package/dist/commands/project/create-project.js.map +1 -1
- package/dist/commands/project/get-active-project.d.ts +2 -2
- package/dist/commands/project/get-active-project.js +7 -11
- package/dist/commands/project/get-active-project.js.map +1 -1
- package/dist/commands/project/list-projects.d.ts +2 -2
- package/dist/commands/project/list-projects.js +7 -11
- package/dist/commands/project/list-projects.js.map +1 -1
- package/dist/commands/project/select-project.d.ts +3 -3
- package/dist/commands/project/select-project.js +20 -25
- package/dist/commands/project/select-project.js.map +1 -1
- package/dist/commands/project/update-project.d.ts +5 -5
- package/dist/commands/project/update-project.js +18 -23
- package/dist/commands/project/update-project.js.map +1 -1
- package/dist/commands/start.d.ts +1 -1
- package/dist/commands/start.js +13 -18
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stop.d.ts +1 -1
- package/dist/commands/stop.js +13 -18
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/token/create-token.d.ts +10 -9
- package/dist/commands/token/create-token.js +56 -59
- package/dist/commands/token/create-token.js.map +1 -1
- package/dist/commands/token/delete-token.d.ts +2 -2
- package/dist/commands/token/delete-token.js +13 -17
- package/dist/commands/token/delete-token.js.map +1 -1
- package/dist/commands/token/get-token.d.ts +3 -3
- package/dist/commands/token/get-token.js +13 -17
- package/dist/commands/token/get-token.js.map +1 -1
- package/dist/commands/token/list-tokens.d.ts +2 -2
- package/dist/commands/token/list-tokens.js +7 -11
- package/dist/commands/token/list-tokens.js.map +1 -1
- package/dist/commands/token/update-token.d.ts +8 -7
- package/dist/commands/token/update-token.js +30 -33
- package/dist/commands/token/update-token.js.map +1 -1
- package/dist/commands/whoami.d.ts +1 -1
- package/dist/commands/whoami.js +7 -11
- package/dist/commands/whoami.js.map +1 -1
- package/dist/common/base-command.d.ts +1 -12
- package/dist/common/base-command.js +13 -17
- package/dist/common/base-command.js.map +1 -1
- package/dist/common/constants.js +12 -15
- package/dist/common/constants.js.map +1 -1
- package/dist/common/error-messages.js +1 -5
- package/dist/common/error-messages.js.map +1 -1
- package/dist/common/prompts.js +7 -11
- package/dist/common/prompts.js.map +1 -1
- package/dist/common/validators.js +15 -21
- package/dist/common/validators.js.map +1 -1
- package/dist/helpers/app.js +17 -30
- package/dist/helpers/app.js.map +1 -1
- package/dist/helpers/degit.js +6 -11
- package/dist/helpers/degit.js.map +1 -1
- package/dist/helpers/jwk.d.ts +1 -1
- package/dist/helpers/jwk.js +16 -24
- package/dist/helpers/jwk.js.map +1 -1
- package/dist/helpers/token.d.ts +4 -5
- package/dist/helpers/token.js +13 -20
- package/dist/helpers/token.js.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/services/affinidi/auth/auth-result-page.js +1 -5
- package/dist/services/affinidi/auth/auth-result-page.js.map +1 -1
- package/dist/services/affinidi/auth/bff-auth-provider.d.ts +1 -1
- package/dist/services/affinidi/auth/bff-auth-provider.js +25 -30
- package/dist/services/affinidi/auth/bff-auth-provider.js.map +1 -1
- package/dist/services/affinidi/auth/types.d.ts +1 -1
- package/dist/services/affinidi/auth/types.js +1 -2
- package/dist/services/affinidi/bff-service.d.ts +5 -5
- package/dist/services/affinidi/bff-service.js +56 -61
- package/dist/services/affinidi/bff-service.js.map +1 -1
- package/dist/services/affinidi/bff-service.types.js +1 -2
- package/dist/services/affinidi/errors.js +21 -26
- package/dist/services/affinidi/errors.js.map +1 -1
- package/dist/services/affinidi/iam/iam.api.d.ts +21 -21
- package/dist/services/affinidi/iam/iam.api.js +6 -12
- package/dist/services/affinidi/iam/iam.api.js.map +1 -1
- package/dist/services/affinidi/iam/{index.d.ts → service.d.ts} +4 -4
- package/dist/services/affinidi/iam/{index.js → service.js} +36 -40
- package/dist/services/affinidi/iam/service.js.map +1 -0
- package/dist/services/affinidi/logger/console-logger-adapter.d.ts +1 -1
- package/dist/services/affinidi/logger/console-logger-adapter.js +1 -5
- package/dist/services/affinidi/logger/console-logger-adapter.js.map +1 -1
- package/dist/services/affinidi/logger/logger-adapter.js +1 -2
- package/dist/services/affinidi/vp-adapter/{index.d.ts → service.d.ts} +2 -2
- package/dist/services/affinidi/vp-adapter/{index.js → service.js} +38 -41
- package/dist/services/affinidi/vp-adapter/service.js.map +1 -0
- package/dist/services/affinidi/vp-adapter/vp-adapter.api.d.ts +43 -43
- package/dist/services/affinidi/vp-adapter/vp-adapter.api.js +8 -14
- package/dist/services/affinidi/vp-adapter/vp-adapter.api.js.map +1 -1
- package/dist/services/credentials-vault.d.ts +0 -1
- package/dist/services/credentials-vault.js +15 -21
- package/dist/services/credentials-vault.js.map +1 -1
- package/dist/services/env-config.d.ts +1 -1
- package/dist/services/env-config.js +6 -10
- package/dist/services/env-config.js.map +1 -1
- package/dist/services/generator/auth0.d.ts +1 -1
- package/dist/services/generator/auth0.js +3 -8
- package/dist/services/generator/auth0.js.map +1 -1
- package/dist/services/generator/env-configurer.js +5 -9
- package/dist/services/generator/env-configurer.js.map +1 -1
- package/package.json +39 -42
- package/theme.json +26 -0
- package/bin/dev +0 -17
- package/bin/run +0 -5
- package/dist/common/index.d.ts +0 -2
- package/dist/common/index.js +0 -8
- package/dist/common/index.js.map +0 -1
- package/dist/services/affinidi/iam/index.js.map +0 -1
- package/dist/services/affinidi/logger/index.d.ts +0 -2
- package/dist/services/affinidi/logger/index.js +0 -6
- package/dist/services/affinidi/logger/index.js.map +0 -1
- package/dist/services/affinidi/vp-adapter/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../../src/commands/project/list-projects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../../src/commands/project/list-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAGnE,MAAM,OAAO,YAAa,SAAQ,WAAgC;IAIzD,KAAK,CAAC,GAAG;QACd,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACpC,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAA;QACzD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;QACzD,OAAO,kBAAkB,CAAA;IAC3B,CAAC;;AAVM,oBAAO,GAAG,qBAAqB,CAAA;AAC/B,qBAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { BaseCommand } from '../../common';
|
|
2
|
-
import { ProjectDto } from '../../services/affinidi/iam/iam.api';
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
|
+
import { ProjectDto } from '../../services/affinidi/iam/iam.api.js';
|
|
3
3
|
export declare class SelectProject extends BaseCommand<typeof SelectProject> {
|
|
4
4
|
static summary: string;
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
|
-
'project-id': import("@oclif/core/
|
|
7
|
+
'project-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
};
|
|
9
9
|
run(): Promise<ProjectDto>;
|
|
10
10
|
}
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const error_messages_1 = require("../../common/error-messages");
|
|
11
|
-
const validators_1 = require("../../common/validators");
|
|
12
|
-
const bff_service_1 = require("../../services/affinidi/bff-service");
|
|
13
|
-
class SelectProject extends common_1.BaseCommand {
|
|
1
|
+
import { select } from '@inquirer/prompts';
|
|
2
|
+
import { ux, Flags } from '@oclif/core';
|
|
3
|
+
import { CLIError } from '@oclif/core/errors';
|
|
4
|
+
import z from 'zod';
|
|
5
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
6
|
+
import { giveFlagInputErrorMessage } from '../../common/error-messages.js';
|
|
7
|
+
import { INPUT_LIMIT } from '../../common/validators.js';
|
|
8
|
+
import { bffService } from '../../services/affinidi/bff-service.js';
|
|
9
|
+
export class SelectProject extends BaseCommand {
|
|
14
10
|
async run() {
|
|
15
11
|
const { flags } = await this.parse(SelectProject);
|
|
16
|
-
const schema =
|
|
12
|
+
const schema = z.string().max(INPUT_LIMIT).uuid().optional();
|
|
17
13
|
let projectId = schema.parse(flags['project-id']);
|
|
18
|
-
|
|
19
|
-
const userProjects = await
|
|
20
|
-
|
|
14
|
+
ux.action.start('Fetching available projects');
|
|
15
|
+
const userProjects = await bffService.getProjects();
|
|
16
|
+
ux.action.stop('Fetched successfully!');
|
|
21
17
|
if (userProjects.length === 1) {
|
|
22
18
|
const response = {
|
|
23
19
|
id: userProjects[0].id,
|
|
@@ -30,30 +26,29 @@ class SelectProject extends common_1.BaseCommand {
|
|
|
30
26
|
}
|
|
31
27
|
if (!projectId) {
|
|
32
28
|
if (flags['no-input']) {
|
|
33
|
-
throw new
|
|
29
|
+
throw new CLIError(giveFlagInputErrorMessage('project-id'));
|
|
34
30
|
}
|
|
35
31
|
const choices = userProjects.map((project) => ({
|
|
36
32
|
value: project.id,
|
|
37
33
|
name: `${project.name} [id: ${project.id}]`,
|
|
38
34
|
}));
|
|
39
|
-
projectId = await (
|
|
35
|
+
projectId = await select({
|
|
40
36
|
message: 'Select a project to set as active',
|
|
41
37
|
choices,
|
|
42
38
|
});
|
|
43
39
|
}
|
|
44
40
|
const selectedProject = userProjects.find((project) => project.id === projectId);
|
|
45
41
|
if (!selectedProject) {
|
|
46
|
-
throw new
|
|
42
|
+
throw new CLIError('Project not found');
|
|
47
43
|
}
|
|
48
|
-
|
|
49
|
-
await
|
|
50
|
-
|
|
44
|
+
ux.action.start('Setting your active project');
|
|
45
|
+
await bffService.setSessionActiveProject(selectedProject.id);
|
|
46
|
+
ux.action.stop('Set successfully!');
|
|
51
47
|
if (!this.jsonEnabled())
|
|
52
48
|
this.logJson(selectedProject);
|
|
53
49
|
return selectedProject;
|
|
54
50
|
}
|
|
55
51
|
}
|
|
56
|
-
exports.SelectProject = SelectProject;
|
|
57
52
|
SelectProject.summary = 'Sets a project as the active project';
|
|
58
53
|
SelectProject.examples = [
|
|
59
54
|
'<%= config.bin %> <%= command.id %>',
|
|
@@ -61,7 +56,7 @@ SelectProject.examples = [
|
|
|
61
56
|
'<%= config.bin %> <%= command.id %> --project-id <project-id>',
|
|
62
57
|
];
|
|
63
58
|
SelectProject.flags = {
|
|
64
|
-
'project-id':
|
|
59
|
+
'project-id': Flags.string({
|
|
65
60
|
char: 'i',
|
|
66
61
|
summary: 'ID of the project',
|
|
67
62
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-project.js","sourceRoot":"","sources":["../../../src/commands/project/select-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"select-project.js","sourceRoot":"","sources":["../../../src/commands/project/select-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { BaseCommand } from '../../common';
|
|
2
|
-
import { ProjectDto } from '../../services/affinidi/iam/iam.api';
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
|
+
import { ProjectDto } from '../../services/affinidi/iam/iam.api.js';
|
|
3
3
|
export declare class UpdateProject extends BaseCommand<typeof UpdateProject> {
|
|
4
4
|
static summary: string;
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
|
-
id: import("@oclif/core/
|
|
8
|
-
name: import("@oclif/core/
|
|
9
|
-
description: import("@oclif/core/
|
|
7
|
+
id: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
};
|
|
11
11
|
run(): Promise<ProjectDto>;
|
|
12
12
|
}
|
|
@@ -1,51 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const prompts_1 = require("../../common/prompts");
|
|
9
|
-
const validators_1 = require("../../common/validators");
|
|
10
|
-
const bff_service_1 = require("../../services/affinidi/bff-service");
|
|
11
|
-
class UpdateProject extends common_1.BaseCommand {
|
|
1
|
+
import { Flags, ux } from '@oclif/core';
|
|
2
|
+
import z from 'zod';
|
|
3
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
4
|
+
import { promptRequiredParameters } from '../../common/prompts.js';
|
|
5
|
+
import { INPUT_LIMIT } from '../../common/validators.js';
|
|
6
|
+
import { bffService } from '../../services/affinidi/bff-service.js';
|
|
7
|
+
export class UpdateProject extends BaseCommand {
|
|
12
8
|
async run() {
|
|
13
9
|
const { flags } = await this.parse(UpdateProject);
|
|
14
|
-
const promptFlags = await
|
|
15
|
-
const schema =
|
|
16
|
-
id:
|
|
17
|
-
name:
|
|
18
|
-
description:
|
|
10
|
+
const promptFlags = await promptRequiredParameters(['id'], flags);
|
|
11
|
+
const schema = z.object({
|
|
12
|
+
id: z.string().max(INPUT_LIMIT),
|
|
13
|
+
name: z.string().max(INPUT_LIMIT).optional(),
|
|
14
|
+
description: z.string().max(INPUT_LIMIT).optional(),
|
|
19
15
|
});
|
|
20
16
|
const validatedFlags = schema.parse(promptFlags);
|
|
21
|
-
|
|
22
|
-
const updateProjectOutput = await
|
|
17
|
+
ux.action.start('Updating the project');
|
|
18
|
+
const updateProjectOutput = await bffService.updateProject({
|
|
23
19
|
id: validatedFlags.id,
|
|
24
20
|
name: validatedFlags?.name ?? undefined,
|
|
25
21
|
description: validatedFlags?.description ?? undefined,
|
|
26
22
|
});
|
|
27
|
-
|
|
23
|
+
ux.action.stop('Updated successfully!');
|
|
28
24
|
if (!this.jsonEnabled())
|
|
29
25
|
this.logJson(updateProjectOutput);
|
|
30
26
|
return updateProjectOutput;
|
|
31
27
|
}
|
|
32
28
|
}
|
|
33
|
-
exports.UpdateProject = UpdateProject;
|
|
34
29
|
UpdateProject.summary = 'Updates project details';
|
|
35
30
|
UpdateProject.examples = [
|
|
36
31
|
'<%= config.bin %> <%= command.id %> -n MyUpdatedProjectName -d MyUpdatedProjectDescription',
|
|
37
32
|
'<%= config.bin %> <%= command.id %> --name="My project name" --description="My project description',
|
|
38
33
|
];
|
|
39
34
|
UpdateProject.flags = {
|
|
40
|
-
id:
|
|
35
|
+
id: Flags.string({
|
|
41
36
|
char: 'i',
|
|
42
37
|
summary: 'Project Id',
|
|
43
38
|
}),
|
|
44
|
-
name:
|
|
39
|
+
name: Flags.string({
|
|
45
40
|
char: 'n',
|
|
46
41
|
summary: 'Name of the project',
|
|
47
42
|
}),
|
|
48
|
-
description:
|
|
43
|
+
description: Flags.string({
|
|
49
44
|
char: 'd',
|
|
50
45
|
summary: 'Description of the project',
|
|
51
46
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-project.js","sourceRoot":"","sources":["../../../src/commands/project/update-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-project.js","sourceRoot":"","sources":["../../../src/commands/project/update-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAGnE,MAAM,OAAO,aAAc,SAAQ,WAAiC;IAqB3D,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;QAEjE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACtB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;YAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;SACpD,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEhD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAEvC,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC;YACzD,EAAE,EAAE,cAAc,CAAC,EAAE;YACrB,IAAI,EAAE,cAAc,EAAE,IAAI,IAAI,SAAS;YACvC,WAAW,EAAE,cAAc,EAAE,WAAW,IAAI,SAAS;SACtD,CAAC,CAAA;QAEF,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAEvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QAC1D,OAAO,mBAAmB,CAAA;IAC5B,CAAC;;AA3CM,qBAAO,GAAG,yBAAyB,CAAA;AACnC,sBAAQ,GAAG;IAChB,4FAA4F;IAC5F,oGAAoG;CACrG,CAAA;AACM,mBAAK,GAAG;IACb,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,YAAY;KACtB,CAAC;IACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,qBAAqB;KAC/B,CAAC;IACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,4BAA4B;KACtC,CAAC;CACH,CAAA"}
|
package/dist/commands/start.d.ts
CHANGED
package/dist/commands/start.js
CHANGED
|
@@ -1,30 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
7
|
-
const common_1 = require("../common");
|
|
8
|
-
const bff_service_1 = require("../services/affinidi/bff-service");
|
|
9
|
-
class Start extends common_1.BaseCommand {
|
|
1
|
+
import { ux } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { BaseCommand } from '../common/base-command.js';
|
|
4
|
+
import { bffService } from '../services/affinidi/bff-service.js';
|
|
5
|
+
export class Start extends BaseCommand {
|
|
10
6
|
async run() {
|
|
11
|
-
|
|
7
|
+
ux.action.start('Authenticating in browser');
|
|
12
8
|
try {
|
|
13
|
-
await
|
|
14
|
-
const activeProject = await
|
|
15
|
-
|
|
16
|
-
this.log(`\nYour active project has been set to the project ${
|
|
9
|
+
await bffService.login();
|
|
10
|
+
const activeProject = await bffService.getActiveProject();
|
|
11
|
+
ux.action.stop('Authenticated successfully!');
|
|
12
|
+
this.log(`\nYour active project has been set to the project ${chalk.underline(activeProject.name)} with ID ${chalk.underline(activeProject.id)}` +
|
|
17
13
|
'\n\nIf you want to change the active project, please follow these steps:' +
|
|
18
|
-
`\n\n💡 To list all your projects run: ${
|
|
19
|
-
`\n\n💡 To change the active project run: ${
|
|
14
|
+
`\n\n💡 To list all your projects run: ${chalk.inverse('affinidi project list-projects')}` +
|
|
15
|
+
`\n\n💡 To change the active project run: ${chalk.inverse('affinidi project select-project -i <project-id>')}\n`);
|
|
20
16
|
}
|
|
21
17
|
catch (error) {
|
|
22
|
-
|
|
18
|
+
ux.action.stop('Authentication failed!');
|
|
23
19
|
this.error(error);
|
|
24
20
|
}
|
|
25
21
|
}
|
|
26
22
|
}
|
|
27
|
-
exports.Start = Start;
|
|
28
23
|
Start.summary = 'Log in to Affinidi';
|
|
29
24
|
Start.examples = ['<%= config.bin %> <%= command.id %>'];
|
|
30
25
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAEhE,MAAM,OAAO,KAAM,SAAQ,WAAyB;IAI3C,KAAK,CAAC,GAAG;QACd,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC5C,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;YACxB,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,CAAA;YACzD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;YAC7C,IAAI,CAAC,GAAG,CACN,qDAAqD,KAAK,CAAC,SAAS,CAClE,aAAa,CAAC,IAAI,CACnB,YAAY,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;gBAC9C,0EAA0E;gBAC1E,yCAAyC,KAAK,CAAC,OAAO,CAAC,gCAAgC,CAAC,EAAE;gBAC1F,4CAA4C,KAAK,CAAC,OAAO,CACvD,iDAAiD,CAClD,IAAI,CACR,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YACxC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;;AAvBM,aAAO,GAAG,oBAAoB,CAAA;AAC9B,cAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA"}
|
package/dist/commands/stop.d.ts
CHANGED
package/dist/commands/stop.js
CHANGED
|
@@ -1,34 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const common_1 = require("../common");
|
|
9
|
-
const bff_service_1 = require("../services/affinidi/bff-service");
|
|
10
|
-
const credentials_vault_1 = require("../services/credentials-vault");
|
|
11
|
-
class Stop extends common_1.BaseCommand {
|
|
1
|
+
import { confirm } from '@inquirer/prompts';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { CLIError } from '@oclif/core/errors';
|
|
4
|
+
import { BaseCommand } from '../common/base-command.js';
|
|
5
|
+
import { bffService } from '../services/affinidi/bff-service.js';
|
|
6
|
+
import { credentialsVault } from '../services/credentials-vault.js';
|
|
7
|
+
export class Stop extends BaseCommand {
|
|
12
8
|
async run() {
|
|
13
9
|
const { flags } = await this.parse(Stop);
|
|
14
|
-
const sessionId =
|
|
10
|
+
const sessionId = credentialsVault.getSessionId();
|
|
15
11
|
if (!sessionId) {
|
|
16
12
|
this.warn('You are not logged in');
|
|
17
13
|
return;
|
|
18
14
|
}
|
|
19
15
|
if (!flags['no-input']) {
|
|
20
|
-
const stop = await (
|
|
16
|
+
const stop = await confirm({
|
|
21
17
|
message: 'Are you sure that you want to log out from Affinidi? Type "n" if you wish to continue using Affinidi CLI, type anything else to log out',
|
|
22
18
|
});
|
|
23
19
|
if (!stop)
|
|
24
|
-
throw new
|
|
20
|
+
throw new CLIError('Action canceled');
|
|
25
21
|
}
|
|
26
|
-
|
|
27
|
-
await
|
|
28
|
-
|
|
22
|
+
ux.action.start('Logging out');
|
|
23
|
+
await bffService.logout();
|
|
24
|
+
ux.action.stop('Logged out successfully!');
|
|
29
25
|
}
|
|
30
26
|
}
|
|
31
|
-
exports.Stop = Stop;
|
|
32
27
|
Stop.summary = 'Log out from Affinidi';
|
|
33
28
|
Stop.examples = ['<%= config.bin %> <%= command.id %>'];
|
|
34
29
|
//# sourceMappingURL=stop.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,MAAM,OAAO,IAAK,SAAQ,WAAwB;IAIzC,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,gBAAgB,CAAC,YAAY,EAAE,CAAA;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;YAClC,OAAM;QACR,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;gBACzB,OAAO,EACL,yIAAyI;aAC5I,CAAC,CAAA;YACF,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QAClD,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAC9B,MAAM,UAAU,CAAC,MAAM,EAAE,CAAA;QACzB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IAC5C,CAAC;;AAtBM,YAAO,GAAG,uBAAuB,CAAA;AACjC,aAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { BaseCommand
|
|
2
|
-
import { TokenDto } from '../../services/affinidi/iam/iam.api';
|
|
1
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
2
|
+
import { TokenDto } from '../../services/affinidi/iam/iam.api.js';
|
|
3
|
+
import { SupportedAlgorithms } from '../../common/constants.js';
|
|
3
4
|
export declare class CreateToken extends BaseCommand<typeof CreateToken> {
|
|
4
5
|
static summary: string;
|
|
5
6
|
static examples: string[];
|
|
6
7
|
static flags: {
|
|
7
|
-
name: import("@oclif/core/
|
|
8
|
-
'key-id': import("@oclif/core/
|
|
9
|
-
'public-key-file': import("@oclif/core/
|
|
10
|
-
algorithm: import("@oclif/core/
|
|
11
|
-
'with-permissions': import("@oclif/core/
|
|
12
|
-
'auto-generate-key': import("@oclif/core/
|
|
13
|
-
passphrase: import("@oclif/core/
|
|
8
|
+
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
'key-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'public-key-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
algorithm: import("@oclif/core/interfaces").OptionFlag<SupportedAlgorithms, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'with-permissions': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
'auto-generate-key': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
passphrase: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
15
|
};
|
|
15
16
|
run(): Promise<TokenDto>;
|
|
16
17
|
private validateFlags;
|
|
@@ -1,28 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const token_1 = require("../../helpers/token");
|
|
15
|
-
const flagsSchema = zod_1.z
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { confirm, input } from '@inquirer/prompts';
|
|
3
|
+
import { Flags, ux } from '@oclif/core';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { BaseCommand } from '../../common/base-command.js';
|
|
7
|
+
import { promptRequiredParameters } from '../../common/prompts.js';
|
|
8
|
+
import { INPUT_LIMIT, validateInputLength } from '../../common/validators.js';
|
|
9
|
+
import { getKeyType, pemToJWK } from '../../helpers/jwk.js';
|
|
10
|
+
import { bffService } from '../../services/affinidi/bff-service.js';
|
|
11
|
+
import { SupportedAlgorithms } from '../../common/constants.js';
|
|
12
|
+
import { addPrincipal, createToken, generateKeyPair, updatePolicies } from '../../helpers/token.js';
|
|
13
|
+
const flagsSchema = z
|
|
16
14
|
.object({
|
|
17
|
-
name:
|
|
18
|
-
algorithm:
|
|
19
|
-
'key-id':
|
|
20
|
-
'public-key-file':
|
|
21
|
-
'auto-generate-key':
|
|
22
|
-
passphrase:
|
|
23
|
-
'with-permissions':
|
|
24
|
-
resources:
|
|
25
|
-
actions:
|
|
15
|
+
name: z.string().max(INPUT_LIMIT),
|
|
16
|
+
algorithm: z.nativeEnum(SupportedAlgorithms),
|
|
17
|
+
'key-id': z.string().max(INPUT_LIMIT).optional(),
|
|
18
|
+
'public-key-file': z.string().max(INPUT_LIMIT).optional(),
|
|
19
|
+
'auto-generate-key': z.boolean(),
|
|
20
|
+
passphrase: z.string().max(INPUT_LIMIT).optional(),
|
|
21
|
+
'with-permissions': z.boolean(),
|
|
22
|
+
resources: z.string().max(INPUT_LIMIT).optional().default('*'),
|
|
23
|
+
actions: z.string().max(INPUT_LIMIT).optional().default('*'),
|
|
26
24
|
})
|
|
27
25
|
.refine((data) => {
|
|
28
26
|
if (!data['auto-generate-key'] && !data['public-key-file']) {
|
|
@@ -33,47 +31,47 @@ const flagsSchema = zod_1.z
|
|
|
33
31
|
message: 'public-key-file is required when auto-generate-key is false',
|
|
34
32
|
path: ['public-key-file'],
|
|
35
33
|
});
|
|
36
|
-
class CreateToken extends
|
|
34
|
+
export class CreateToken extends BaseCommand {
|
|
37
35
|
async run() {
|
|
38
36
|
const { flags } = await this.parse(CreateToken);
|
|
39
37
|
const validatedFlags = await this.validateFlags(flags);
|
|
40
|
-
|
|
38
|
+
ux.action.start('Creating Personal Access Token');
|
|
41
39
|
let keypair, jwks;
|
|
42
|
-
const kid = validatedFlags['key-id'] ?? (
|
|
40
|
+
const kid = validatedFlags['key-id'] ?? uuidv4();
|
|
43
41
|
if (validatedFlags['auto-generate-key']) {
|
|
44
|
-
keypair =
|
|
42
|
+
keypair = generateKeyPair(kid, validatedFlags.algorithm, validatedFlags.passphrase);
|
|
45
43
|
jwks = keypair.jwks;
|
|
46
44
|
}
|
|
47
45
|
else {
|
|
48
|
-
const publicKeyPEM = await
|
|
49
|
-
const jwk = await
|
|
46
|
+
const publicKeyPEM = await readFile(validatedFlags['public-key-file'], 'utf8');
|
|
47
|
+
const jwk = await pemToJWK(publicKeyPEM, validatedFlags.algorithm);
|
|
50
48
|
jwks = {
|
|
51
49
|
keys: [
|
|
52
50
|
{
|
|
53
51
|
kid,
|
|
54
52
|
alg: validatedFlags.algorithm,
|
|
55
53
|
use: 'sig',
|
|
56
|
-
kty: jwk.kty ??
|
|
54
|
+
kty: jwk.kty ?? getKeyType(validatedFlags.algorithm),
|
|
57
55
|
n: jwk.n,
|
|
58
56
|
e: jwk.e,
|
|
59
57
|
},
|
|
60
58
|
],
|
|
61
59
|
};
|
|
62
60
|
}
|
|
63
|
-
const token = await
|
|
64
|
-
|
|
61
|
+
const token = await createToken(validatedFlags.name, validatedFlags.algorithm, jwks, validatedFlags['key-id']);
|
|
62
|
+
ux.action.stop('Created successfully!');
|
|
65
63
|
let projectId;
|
|
66
64
|
if (validatedFlags['with-permissions']) {
|
|
67
|
-
|
|
68
|
-
const promises = [
|
|
65
|
+
ux.action.start('Adding token to active project');
|
|
66
|
+
const promises = [addPrincipal(token.id), bffService.getActiveProject()];
|
|
69
67
|
const [, activeProject] = await Promise.all(promises);
|
|
70
68
|
projectId = activeProject.id;
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
ux.action.stop('Added successfully!');
|
|
70
|
+
ux.action.start('Granting permissions to token');
|
|
73
71
|
const actions = validatedFlags.actions ? validatedFlags.actions.split(' ') : ['*'];
|
|
74
72
|
const resources = validatedFlags.actions ? validatedFlags.actions.split(' ') : ['*'];
|
|
75
|
-
await
|
|
76
|
-
|
|
73
|
+
await updatePolicies(token.id, projectId, actions, resources);
|
|
74
|
+
ux.action.stop('Granted successfully!');
|
|
77
75
|
}
|
|
78
76
|
if (!this.jsonEnabled()) {
|
|
79
77
|
this.logJson(token);
|
|
@@ -93,9 +91,9 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
93
91
|
return token;
|
|
94
92
|
}
|
|
95
93
|
async validateFlags(flags) {
|
|
96
|
-
let promptFlags = await
|
|
94
|
+
let promptFlags = await promptRequiredParameters(['name'], flags);
|
|
97
95
|
if (!promptFlags['public-key-file'] && !promptFlags['no-input']) {
|
|
98
|
-
promptFlags['auto-generate-key'] ?? (promptFlags['auto-generate-key'] = await
|
|
96
|
+
promptFlags['auto-generate-key'] ?? (promptFlags['auto-generate-key'] = await confirm({
|
|
99
97
|
message: 'Generate a new keypair for the token?',
|
|
100
98
|
}));
|
|
101
99
|
}
|
|
@@ -103,15 +101,15 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
103
101
|
promptFlags['auto-generate-key'] = !!promptFlags['auto-generate-key'];
|
|
104
102
|
}
|
|
105
103
|
if (promptFlags['auto-generate-key'] && !promptFlags['no-input']) {
|
|
106
|
-
promptFlags.passphrase ?? (promptFlags.passphrase =
|
|
104
|
+
promptFlags.passphrase ?? (promptFlags.passphrase = validateInputLength(await input({
|
|
107
105
|
message: 'Enter a passphrase to encrypt the private key. Leave it empty for no encryption',
|
|
108
|
-
}),
|
|
106
|
+
}), INPUT_LIMIT));
|
|
109
107
|
}
|
|
110
108
|
if (!promptFlags['auto-generate-key']) {
|
|
111
|
-
promptFlags = await
|
|
109
|
+
promptFlags = await promptRequiredParameters(['public-key-file'], promptFlags);
|
|
112
110
|
}
|
|
113
111
|
if (!promptFlags['no-input']) {
|
|
114
|
-
promptFlags['with-permissions'] ?? (promptFlags['with-permissions'] = await
|
|
112
|
+
promptFlags['with-permissions'] ?? (promptFlags['with-permissions'] = await confirm({
|
|
115
113
|
message: 'Add token to active project and grant permissions?',
|
|
116
114
|
}));
|
|
117
115
|
}
|
|
@@ -119,19 +117,18 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
119
117
|
promptFlags['with-permissions'] = !!promptFlags['with-permissions'];
|
|
120
118
|
}
|
|
121
119
|
if (!promptFlags['no-input'] && promptFlags['with-permissions']) {
|
|
122
|
-
promptFlags.resources =
|
|
120
|
+
promptFlags.resources = validateInputLength(await input({
|
|
123
121
|
message: 'Enter the allowed resources, separated by spaces. Use * to allow access to all project resources',
|
|
124
122
|
default: '*',
|
|
125
|
-
}),
|
|
126
|
-
promptFlags.actions =
|
|
123
|
+
}), INPUT_LIMIT);
|
|
124
|
+
promptFlags.actions = validateInputLength(await input({
|
|
127
125
|
message: 'Enter the allowed actions, separated by spaces. Use * to allow all actions',
|
|
128
126
|
default: '*',
|
|
129
|
-
}),
|
|
127
|
+
}), INPUT_LIMIT);
|
|
130
128
|
}
|
|
131
129
|
return flagsSchema.parse(promptFlags);
|
|
132
130
|
}
|
|
133
131
|
}
|
|
134
|
-
exports.CreateToken = CreateToken;
|
|
135
132
|
CreateToken.summary = 'Creates a Personal Access Token (PAT)';
|
|
136
133
|
CreateToken.examples = [
|
|
137
134
|
'<%= config.bin %> <%= command.id %>',
|
|
@@ -143,34 +140,34 @@ CreateToken.examples = [
|
|
|
143
140
|
'<%= config.bin %> <%= command.id %> -n MyNewToken -g -w',
|
|
144
141
|
];
|
|
145
142
|
CreateToken.flags = {
|
|
146
|
-
name:
|
|
143
|
+
name: Flags.string({
|
|
147
144
|
char: 'n',
|
|
148
145
|
summary: 'Name of the Personal Access Token, at least 8 chars long',
|
|
149
146
|
}),
|
|
150
|
-
'key-id':
|
|
147
|
+
'key-id': Flags.string({
|
|
151
148
|
char: 'k',
|
|
152
149
|
summary: 'Identifier of the key (kid)',
|
|
153
150
|
}),
|
|
154
|
-
'public-key-file':
|
|
151
|
+
'public-key-file': Flags.string({
|
|
155
152
|
char: 'f',
|
|
156
153
|
summary: 'Location of the public key PEM file',
|
|
157
154
|
}),
|
|
158
|
-
algorithm:
|
|
155
|
+
algorithm: Flags.custom({
|
|
159
156
|
char: 'a',
|
|
160
157
|
summary: 'The specific cryptographic algorithm used with the key',
|
|
161
|
-
options: Object.values(
|
|
162
|
-
default:
|
|
158
|
+
options: Object.values(SupportedAlgorithms),
|
|
159
|
+
default: SupportedAlgorithms.RS256,
|
|
163
160
|
})(),
|
|
164
|
-
'with-permissions':
|
|
161
|
+
'with-permissions': Flags.boolean({
|
|
165
162
|
char: 'w',
|
|
166
163
|
summary: 'Set token policies to perform any action on the active project',
|
|
167
164
|
}),
|
|
168
|
-
'auto-generate-key':
|
|
165
|
+
'auto-generate-key': Flags.boolean({
|
|
169
166
|
char: 'g',
|
|
170
167
|
summary: 'Auto-generate private-public key pair',
|
|
171
168
|
exclusive: ['public-key-file'],
|
|
172
169
|
}),
|
|
173
|
-
passphrase:
|
|
170
|
+
passphrase: Flags.string({
|
|
174
171
|
char: 'p',
|
|
175
172
|
summary: 'Passphrase for generation of private public key pair',
|
|
176
173
|
dependsOn: ['auto-generate-key'],
|