@affinidi/cli 1.19.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 +231 -0
- package/bin/dev +17 -0
- package/bin/dev.cmd +3 -0
- package/bin/run +5 -0
- package/bin/run.cmd +3 -0
- package/dist/commands/create/project.d.ts +10 -0
- package/dist/commands/create/project.js +41 -0
- package/dist/commands/create/project.js.map +1 -0
- package/dist/commands/generate-application/index.d.ts +16 -0
- package/dist/commands/generate-application/index.js +90 -0
- package/dist/commands/generate-application/index.js.map +1 -0
- package/dist/commands/issue-vc.d.ts +14 -0
- package/dist/commands/issue-vc.js +85 -0
- package/dist/commands/issue-vc.js.map +1 -0
- package/dist/commands/list/index.d.ts +7 -0
- package/dist/commands/list/index.js +24 -0
- package/dist/commands/list/index.js.map +1 -0
- package/dist/commands/list/projects.d.ts +15 -0
- package/dist/commands/list/projects.js +69 -0
- package/dist/commands/list/projects.js.map +1 -0
- package/dist/commands/list/schemas.d.ts +28 -0
- package/dist/commands/list/schemas.js +109 -0
- package/dist/commands/list/schemas.js.map +1 -0
- package/dist/commands/login/index.d.ts +10 -0
- package/dist/commands/login/index.js +50 -0
- package/dist/commands/login/index.js.map +1 -0
- package/dist/commands/logout/index.d.ts +7 -0
- package/dist/commands/logout/index.js +32 -0
- package/dist/commands/logout/index.js.map +1 -0
- package/dist/commands/show/index.d.ts +7 -0
- package/dist/commands/show/index.js +24 -0
- package/dist/commands/show/index.js.map +1 -0
- package/dist/commands/show/project.d.ts +14 -0
- package/dist/commands/show/project.js +84 -0
- package/dist/commands/show/project.js.map +1 -0
- package/dist/commands/show/schema.d.ts +13 -0
- package/dist/commands/show/schema.js +61 -0
- package/dist/commands/show/schema.js.map +1 -0
- package/dist/commands/sign-up/index.d.ts +10 -0
- package/dist/commands/sign-up/index.js +56 -0
- package/dist/commands/sign-up/index.js.map +1 -0
- package/dist/commands/use/index.d.ts +7 -0
- package/dist/commands/use/index.js +20 -0
- package/dist/commands/use/index.js.map +1 -0
- package/dist/commands/use/project.d.ts +13 -0
- package/dist/commands/use/project.js +77 -0
- package/dist/commands/use/project.js.map +1 -0
- package/dist/commands/verify-vc.d.ts +10 -0
- package/dist/commands/verify-vc.js +37 -0
- package/dist/commands/verify-vc.js.map +1 -0
- package/dist/errors/index.d.ts +20 -0
- package/dist/errors/index.js +63 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/fixtures/mock-projects.d.ts +22 -0
- package/dist/fixtures/mock-projects.js +38 -0
- package/dist/fixtures/mock-projects.js.map +1 -0
- package/dist/fixtures/mock-schemas.d.ts +4 -0
- package/dist/fixtures/mock-schemas.js +34 -0
- package/dist/fixtures/mock-schemas.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/render/functions.d.ts +2 -0
- package/dist/render/functions.js +28 -0
- package/dist/render/functions.js.map +1 -0
- package/dist/render/texts.d.ts +4 -0
- package/dist/render/texts.js +31 -0
- package/dist/render/texts.js.map +1 -0
- package/dist/services/git/index.d.ts +3 -0
- package/dist/services/git/index.js +20 -0
- package/dist/services/git/index.js.map +1 -0
- package/dist/services/iam/iam.api.d.ts +145 -0
- package/dist/services/iam/iam.api.js +202 -0
- package/dist/services/iam/iam.api.js.map +1 -0
- package/dist/services/iam/index.d.ts +11 -0
- package/dist/services/iam/index.js +59 -0
- package/dist/services/iam/index.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.js +13 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/issuance/index.d.ts +10 -0
- package/dist/services/issuance/index.js +40 -0
- package/dist/services/issuance/index.js.map +1 -0
- package/dist/services/issuance/issuance.api.d.ts +360 -0
- package/dist/services/issuance/issuance.api.js +311 -0
- package/dist/services/issuance/issuance.api.js.map +1 -0
- package/dist/services/issuance/parse.schema.url.d.ts +5 -0
- package/dist/services/issuance/parse.schema.url.js +73 -0
- package/dist/services/issuance/parse.schema.url.js.map +1 -0
- package/dist/services/schema-manager/index.d.ts +19 -0
- package/dist/services/schema-manager/index.js +43 -0
- package/dist/services/schema-manager/index.js.map +1 -0
- package/dist/services/schema-manager/schema-manager.api.d.ts +279 -0
- package/dist/services/schema-manager/schema-manager.api.js +171 -0
- package/dist/services/schema-manager/schema-manager.api.js.map +1 -0
- package/dist/services/user-management/index.d.ts +35 -0
- package/dist/services/user-management/index.js +108 -0
- package/dist/services/user-management/index.js.map +1 -0
- package/dist/services/user-management/user-management.api.d.ts +110 -0
- package/dist/services/user-management/user-management.api.js +185 -0
- package/dist/services/user-management/user-management.api.js.map +1 -0
- package/dist/services/vault/index.d.ts +23 -0
- package/dist/services/vault/index.js +67 -0
- package/dist/services/vault/index.js.map +1 -0
- package/dist/services/verification/index.d.ts +9 -0
- package/dist/services/verification/index.js +29 -0
- package/dist/services/verification/index.js.map +1 -0
- package/dist/services/verification/verifier.api.d.ts +202 -0
- package/dist/services/verification/verifier.api.js +187 -0
- package/dist/services/verification/verifier.api.js.map +1 -0
- package/dist/services/writer/index.d.ts +3 -0
- package/dist/services/writer/index.js +17 -0
- package/dist/services/writer/index.js.map +1 -0
- package/dist/user-actions/index.d.ts +1 -0
- package/dist/user-actions/index.js +13 -0
- package/dist/user-actions/index.js.map +1 -0
- package/dist/user-actions/prompts.d.ts +10 -0
- package/dist/user-actions/prompts.js +36 -0
- package/dist/user-actions/prompts.js.map +1 -0
- package/package.json +145 -0
package/README.md
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Command Line tools for Affinidi Elements
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
npm install @affinidi/cli
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Quick start
|
|
10
|
+
|
|
11
|
+
### Sign up:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
affinidi sign-up
|
|
15
|
+
```
|
|
16
|
+
use `affinidi login` instead if you already have an Affinidi Account
|
|
17
|
+
|
|
18
|
+
### Create a project:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
affinidi create project
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Generate an application
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
affinidi generate-application -n "My Application"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
## affinidi generate-application
|
|
33
|
+
|
|
34
|
+
Use this command to generate a Privacy Preserving app
|
|
35
|
+
|
|
36
|
+
USAGE
|
|
37
|
+
```
|
|
38
|
+
$ affinidi generate-application [-p web|mobile] [-n <value>] [-u portable-reputation|access-without-ownership-of-data|certification-and-verification|kyc-kyb]
|
|
39
|
+
|
|
40
|
+
FLAGS
|
|
41
|
+
-n, --name=<value> [default: my-app] Name of the application
|
|
42
|
+
-p, --platform=(web|mobile) [default: web] Platform
|
|
43
|
+
-u, --use-case=(portable-reputation|access-without-ownership-of-data|certification-and-verification|kyc-kyb) [default: certification-and-verification] Use case
|
|
44
|
+
|
|
45
|
+
DESCRIPTION
|
|
46
|
+
Use this command to generate a Privacy Preserving app
|
|
47
|
+
|
|
48
|
+
EXAMPLES
|
|
49
|
+
$ affinidi generate-application
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## affinidi help
|
|
53
|
+
Display help for affinidi.
|
|
54
|
+
|
|
55
|
+
## affinidi login
|
|
56
|
+
|
|
57
|
+
Log-in with your email address to use Affinidi privacy preserving services.
|
|
58
|
+
|
|
59
|
+
USAGE
|
|
60
|
+
```
|
|
61
|
+
$ affinidi login [EMAIL]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
EXAMPLES
|
|
65
|
+
```
|
|
66
|
+
$ affinidi login
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## affinidi sign-up
|
|
70
|
+
|
|
71
|
+
Use this command to log-in with your email address to use Affinidi privacy preserving services.
|
|
72
|
+
|
|
73
|
+
USAGE
|
|
74
|
+
```
|
|
75
|
+
$ affinidi sign-up [EMAIL]
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
EXAMPLES
|
|
79
|
+
```
|
|
80
|
+
$ affinidi sign-up
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## affinidi logout
|
|
84
|
+
|
|
85
|
+
Use this command to end your affinidi session
|
|
86
|
+
|
|
87
|
+
USAGE
|
|
88
|
+
```
|
|
89
|
+
$ affinidi logout
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
EXAMPLES
|
|
93
|
+
```
|
|
94
|
+
$ affinidi logout
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## affinidi list
|
|
98
|
+
|
|
99
|
+
The list command to display various resources
|
|
100
|
+
|
|
101
|
+
USAGE
|
|
102
|
+
```
|
|
103
|
+
$ affinidi list
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
Use the list command if you want to display some of your resources
|
|
108
|
+
like the schemas or projects that you've created.
|
|
109
|
+
|
|
110
|
+
The current available resources are:
|
|
111
|
+
- schemas
|
|
112
|
+
- projects
|
|
113
|
+
See the command examples in the help:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
$ affinidi list --help
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
EXAMPLES
|
|
120
|
+
```
|
|
121
|
+
Shows you the list of your projects
|
|
122
|
+
|
|
123
|
+
$ affinidi list projects
|
|
124
|
+
|
|
125
|
+
Shows a list of available schemas
|
|
126
|
+
|
|
127
|
+
$ affinidi list schemas
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
COMMANDS
|
|
131
|
+
```
|
|
132
|
+
list projects Perform the action of listing all the projects you created
|
|
133
|
+
list schemas
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## affinidi show
|
|
137
|
+
|
|
138
|
+
The Show command to display the detail of a resource
|
|
139
|
+
|
|
140
|
+
USAGE
|
|
141
|
+
```
|
|
142
|
+
$ affinidi show
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Use the show command if you want to display some of your resources
|
|
146
|
+
like the schema or project that you've created.
|
|
147
|
+
|
|
148
|
+
The current available resources are:
|
|
149
|
+
- schema
|
|
150
|
+
- project
|
|
151
|
+
See the command examples in the help:
|
|
152
|
+
```
|
|
153
|
+
$ affinidi show --help
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
EXAMPLES
|
|
157
|
+
```
|
|
158
|
+
Shows the details of a schema
|
|
159
|
+
|
|
160
|
+
$ affinidi show schema [<schema-id>] [--output json]
|
|
161
|
+
|
|
162
|
+
Shows information about a specific project that you own.
|
|
163
|
+
|
|
164
|
+
$ affinidi show [<project-id>] [--output json]
|
|
165
|
+
```
|
|
166
|
+
COMMANDS
|
|
167
|
+
```
|
|
168
|
+
show project describe the command here
|
|
169
|
+
show schema
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## affinidi use
|
|
173
|
+
|
|
174
|
+
The Use command selects an entity to work with
|
|
175
|
+
|
|
176
|
+
USAGE
|
|
177
|
+
```
|
|
178
|
+
$ affinidi use
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
Use the use command if you want to select a project you want to work on.
|
|
183
|
+
|
|
184
|
+
See the command examples in the help:
|
|
185
|
+
```
|
|
186
|
+
$ affinidi use --help
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
EXAMPLES
|
|
190
|
+
```
|
|
191
|
+
Use a given project
|
|
192
|
+
|
|
193
|
+
$ affinidi use use [<project-id>]
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## affinidi issue-vc
|
|
197
|
+
|
|
198
|
+
Issues a verifiable credential based on an given schema
|
|
199
|
+
|
|
200
|
+
USAGE
|
|
201
|
+
```
|
|
202
|
+
$ affinidi issue-vc [EMAIL] -s <value> -d <value>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
FLAGS
|
|
206
|
+
```
|
|
207
|
+
-d, --data=<value> (required) source json file with credential data
|
|
208
|
+
-s, --schema=<value> (required) json schema url
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
EXAMPLES
|
|
212
|
+
```
|
|
213
|
+
$ affinidi issue-vc
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## affinidi verify-vc
|
|
217
|
+
|
|
218
|
+
Verifies a verifiable credential
|
|
219
|
+
|
|
220
|
+
USAGE
|
|
221
|
+
```
|
|
222
|
+
$ affinidi verify-vc -d <value>
|
|
223
|
+
```
|
|
224
|
+
FLAGS
|
|
225
|
+
```
|
|
226
|
+
-d, --data=<value> (required) source json file with credentials to be verified
|
|
227
|
+
```
|
|
228
|
+
EXAMPLES
|
|
229
|
+
```
|
|
230
|
+
$ affinidi verify-vc
|
|
231
|
+
```
|
package/bin/dev
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const oclif = require('@oclif/core')
|
|
4
|
+
|
|
5
|
+
const path = require('path')
|
|
6
|
+
const project = path.join(__dirname, '..', 'tsconfig.json')
|
|
7
|
+
|
|
8
|
+
// In dev mode -> use ts-node and dev plugins
|
|
9
|
+
process.env.NODE_ENV = 'development'
|
|
10
|
+
|
|
11
|
+
require('ts-node').register({project})
|
|
12
|
+
|
|
13
|
+
// In dev mode, always show stack traces
|
|
14
|
+
oclif.settings.debug = true;
|
|
15
|
+
|
|
16
|
+
// Start the CLI
|
|
17
|
+
oclif.run().then(oclif.flush).catch(oclif.Errors.handle)
|
package/bin/dev.cmd
ADDED
package/bin/run
ADDED
package/bin/run.cmd
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Project extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
name: string;
|
|
7
|
+
}[];
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
catch(error: string | Error): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
|
+
const user_actions_1 = require("../../user-actions");
|
|
7
|
+
const services_1 = require("../../services");
|
|
8
|
+
const user_management_1 = require("../../services/user-management");
|
|
9
|
+
class Project extends core_1.Command {
|
|
10
|
+
async run() {
|
|
11
|
+
var _a;
|
|
12
|
+
const { args } = await this.parse(Project);
|
|
13
|
+
let { projectName } = args;
|
|
14
|
+
if (!projectName) {
|
|
15
|
+
projectName = await (0, user_actions_1.projectNamePrompt)();
|
|
16
|
+
}
|
|
17
|
+
const token = (_a = (0, user_management_1.getSession)()) === null || _a === void 0 ? void 0 : _a.accessToken;
|
|
18
|
+
const projectNameInput = {
|
|
19
|
+
name: projectName,
|
|
20
|
+
};
|
|
21
|
+
core_1.CliUx.ux.action.start('Creating project');
|
|
22
|
+
const projectData = await services_1.iAmService.createProject(token, projectNameInput);
|
|
23
|
+
const projectDetails = await services_1.iAmService.getProjectSummary(token, projectData.projectId);
|
|
24
|
+
core_1.CliUx.ux.action.stop('Project has been successfully created: ');
|
|
25
|
+
services_1.vaultService.set(services_1.VAULT_KEYS.projectId, projectDetails.project.projectId);
|
|
26
|
+
services_1.vaultService.set(services_1.VAULT_KEYS.projectName, projectDetails.project.name);
|
|
27
|
+
services_1.vaultService.set(services_1.VAULT_KEYS.projectAPIKey, projectDetails.apiKey.apiKeyHash);
|
|
28
|
+
services_1.vaultService.set(services_1.VAULT_KEYS.projectDID, projectDetails.wallet.did);
|
|
29
|
+
core_1.CliUx.ux.info(chalk_1.default.red.bold('Please save the API key hash and DID URL somewhere safe. You would not be able to view them again.'));
|
|
30
|
+
core_1.CliUx.ux.info(JSON.stringify(projectDetails, null, ' '));
|
|
31
|
+
}
|
|
32
|
+
async catch(error) {
|
|
33
|
+
core_1.CliUx.ux.action.stop('');
|
|
34
|
+
core_1.CliUx.ux.info(error.toString());
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.default = Project;
|
|
38
|
+
Project.description = 'Use this command to create a new Affinidi project';
|
|
39
|
+
Project.examples = ['<%= config.bin %> <%= command.id %>'];
|
|
40
|
+
Project.args = [{ name: 'projectName' }];
|
|
41
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/create/project.ts"],"names":[],"mappings":";;;AAAA,sCAA4C;AAC5C,0DAAyB;AAEzB,qDAAsD;AACtD,6CAAqE;AAErE,oEAA2D;AAE3D,MAAqB,OAAQ,SAAQ,cAAO;IAOnC,KAAK,CAAC,GAAG;;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE1C,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;QAE1B,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,MAAM,IAAA,gCAAiB,GAAE,CAAA;SACxC;QACD,MAAM,KAAK,GAAG,MAAA,IAAA,4BAAU,GAAE,0CAAE,WAAW,CAAA;QACvC,MAAM,gBAAgB,GAAuB;YAC3C,IAAI,EAAE,WAAW;SAClB,CAAA;QACD,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACzC,MAAM,WAAW,GAAG,MAAM,qBAAU,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QAC3E,MAAM,cAAc,GAAG,MAAM,qBAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;QACvF,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QAC/D,uBAAY,CAAC,GAAG,CAAC,qBAAU,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACxE,uBAAY,CAAC,GAAG,CAAC,qBAAU,CAAC,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrE,uBAAY,CAAC,GAAG,CAAC,qBAAU,CAAC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC5E,uBAAY,CAAC,GAAG,CAAC,qBAAU,CAAC,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAClE,YAAK,CAAC,EAAE,CAAC,IAAI,CACX,eAAK,CAAC,GAAG,CAAC,IAAI,CACZ,oGAAoG,CACrG,CACF,CAAA;QACD,YAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAqB;QAC/B,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxB,YAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IACjC,CAAC;;AAtCH,0BAuCC;AAtCQ,mBAAW,GAAG,mDAAmD,CAAA;AAEjE,gBAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA;AAElD,YAAI,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
declare type PlatformType = 'web' | 'mobile';
|
|
3
|
+
declare type UseCaseType = 'portable-reputation' | 'access-without-ownership-of-data' | 'certification-and-verification' | 'kyc-kyb';
|
|
4
|
+
export default class GenerateApplication extends Command {
|
|
5
|
+
static description: string;
|
|
6
|
+
static examples: string[];
|
|
7
|
+
static flags: {
|
|
8
|
+
platform: import("@oclif/core/lib/interfaces").OptionFlag<PlatformType>;
|
|
9
|
+
name: import("@oclif/core/lib/interfaces").OptionFlag<string>;
|
|
10
|
+
'use-case': import("@oclif/core/lib/interfaces").OptionFlag<UseCaseType>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
private setUpProject;
|
|
14
|
+
private download;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const services_1 = require("../../services");
|
|
5
|
+
const git_1 = require("../../services/git");
|
|
6
|
+
const UseCaseSources = {
|
|
7
|
+
'portable-reputation': 'NOT IMPLEMENTED YET',
|
|
8
|
+
'access-without-ownership-of-data': 'NOT IMPLEMENTED YET',
|
|
9
|
+
'certification-and-verification': 'https://github.com/affinityproject/elements-reference-app-frontend.git',
|
|
10
|
+
'kyc-kyb': 'NOT IMPLEMENTED YET',
|
|
11
|
+
};
|
|
12
|
+
class GenerateApplication extends core_1.Command {
|
|
13
|
+
async run() {
|
|
14
|
+
const { flags } = await this.parse(GenerateApplication);
|
|
15
|
+
core_1.CliUx.ux.action.start('Generating an application');
|
|
16
|
+
const useCase = flags['use-case'];
|
|
17
|
+
const name = flags.name;
|
|
18
|
+
try {
|
|
19
|
+
switch (useCase) {
|
|
20
|
+
case 'certification-and-verification':
|
|
21
|
+
await this.download(UseCaseSources[useCase], name);
|
|
22
|
+
break;
|
|
23
|
+
case 'access-without-ownership-of-data':
|
|
24
|
+
case 'portable-reputation':
|
|
25
|
+
case 'kyc-kyb':
|
|
26
|
+
core_1.CliUx.ux.info('Not implemented yet');
|
|
27
|
+
return;
|
|
28
|
+
default:
|
|
29
|
+
core_1.CliUx.ux.error('Invalid use-case');
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
core_1.CliUx.ux.info(`Failed to generate an application: ${error.message}`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.setUpProject(name);
|
|
38
|
+
core_1.CliUx.ux.action.stop();
|
|
39
|
+
}
|
|
40
|
+
setUpProject(name) {
|
|
41
|
+
const activeProject = services_1.vaultService.get('active-project-api-key');
|
|
42
|
+
core_1.CliUx.ux.info(`Setting up the project`);
|
|
43
|
+
try {
|
|
44
|
+
services_1.Writer.write(`${name}/.env`, [
|
|
45
|
+
'REACT_APP_CLOUD_WALLET_URL=https://cloud-wallet-api.prod.affinity-project.org',
|
|
46
|
+
'REACT_APP_VERIFIER_URL=https://affinity-verifier.prod.affinity-project.org',
|
|
47
|
+
`REACT_APP_API_KEY=${activeProject}`,
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
core_1.CliUx.ux.info(`Failed to set up project: ${error.message}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async download(gitUrl, destination) {
|
|
55
|
+
try {
|
|
56
|
+
await git_1.GitService.clone(gitUrl, destination);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
core_1.CliUx.ux.info(`Download Failed: ${error.message}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.default = GenerateApplication;
|
|
64
|
+
GenerateApplication.description = 'Use this command to generate a Privacy Preserving app';
|
|
65
|
+
GenerateApplication.examples = ['<%= config.bin %> <%= command.id %>'];
|
|
66
|
+
GenerateApplication.flags = {
|
|
67
|
+
platform: core_1.Flags.enum({
|
|
68
|
+
char: 'p',
|
|
69
|
+
description: 'Platform',
|
|
70
|
+
default: 'web',
|
|
71
|
+
options: ['web', 'mobile'],
|
|
72
|
+
}),
|
|
73
|
+
name: core_1.Flags.string({
|
|
74
|
+
char: 'n',
|
|
75
|
+
description: 'Name of the application',
|
|
76
|
+
default: 'my-app',
|
|
77
|
+
}),
|
|
78
|
+
'use-case': core_1.Flags.enum({
|
|
79
|
+
char: 'u',
|
|
80
|
+
description: 'Use case',
|
|
81
|
+
default: 'certification-and-verification',
|
|
82
|
+
options: [
|
|
83
|
+
'portable-reputation',
|
|
84
|
+
'access-without-ownership-of-data',
|
|
85
|
+
'certification-and-verification',
|
|
86
|
+
'kyc-kyb',
|
|
87
|
+
],
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/generate-application/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class IssueVc extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
schema: import("@oclif/core/lib/interfaces").OptionFlag<string>;
|
|
7
|
+
data: import("@oclif/core/lib/interfaces").OptionFlag<string>;
|
|
8
|
+
};
|
|
9
|
+
static args: {
|
|
10
|
+
name: string;
|
|
11
|
+
}[];
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
catch(error: string | Error): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const promises_1 = tslib_1.__importDefault(require("fs/promises"));
|
|
6
|
+
const EmailValidator = tslib_1.__importStar(require("email-validator"));
|
|
7
|
+
const parse_schema_url_1 = require("../services/issuance/parse.schema.url");
|
|
8
|
+
const services_1 = require("../services");
|
|
9
|
+
const issuance_api_1 = require("../services/issuance/issuance.api");
|
|
10
|
+
const issuance_1 = require("../services/issuance");
|
|
11
|
+
const errors_1 = require("../errors");
|
|
12
|
+
const user_management_1 = require("../services/user-management");
|
|
13
|
+
const user_actions_1 = require("../user-actions");
|
|
14
|
+
const MAX_EMAIL_ATTEMPT = 3;
|
|
15
|
+
class IssueVc extends core_1.Command {
|
|
16
|
+
async run() {
|
|
17
|
+
var _a;
|
|
18
|
+
const { flags, args } = await this.parse(IssueVc);
|
|
19
|
+
let { email } = args;
|
|
20
|
+
if (!email) {
|
|
21
|
+
email = await (0, user_actions_1.enterIssuanceEmailPrompt)();
|
|
22
|
+
}
|
|
23
|
+
let wrongEmailCount = 0;
|
|
24
|
+
while (!EmailValidator.validate(email)) {
|
|
25
|
+
// eslint-disable-next-line no-await-in-loop
|
|
26
|
+
email = await (0, user_actions_1.enterIssuanceEmailPrompt)();
|
|
27
|
+
wrongEmailCount += 1;
|
|
28
|
+
if (wrongEmailCount === MAX_EMAIL_ATTEMPT) {
|
|
29
|
+
core_1.CliUx.ux.error(errors_1.WrongEmailError);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const token = (_a = (0, user_management_1.getSession)()) === null || _a === void 0 ? void 0 : _a.accessToken;
|
|
33
|
+
const apiKeyHash = services_1.vaultService.get(services_1.VAULT_KEYS.projectAPIKey);
|
|
34
|
+
const { schemaType, jsonSchema, jsonLdContext } = (0, parse_schema_url_1.parseSchemaURL)(flags.schema);
|
|
35
|
+
const issuanceJson = {
|
|
36
|
+
template: {
|
|
37
|
+
verification: {
|
|
38
|
+
method: issuance_api_1.VerificationMethod.Email,
|
|
39
|
+
},
|
|
40
|
+
schema: {
|
|
41
|
+
type: schemaType,
|
|
42
|
+
jsonLdContextUrl: jsonLdContext.toString(),
|
|
43
|
+
jsonSchemaUrl: jsonSchema.toString(),
|
|
44
|
+
},
|
|
45
|
+
issuerDid: services_1.vaultService.get(services_1.VAULT_KEYS.projectDID),
|
|
46
|
+
},
|
|
47
|
+
projectId: services_1.vaultService.get(services_1.VAULT_KEYS.projectId),
|
|
48
|
+
};
|
|
49
|
+
const file = await promises_1.default.readFile(flags.data, 'utf-8');
|
|
50
|
+
const offerInput = {
|
|
51
|
+
verification: {
|
|
52
|
+
target: {
|
|
53
|
+
email,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
credentialSubject: JSON.parse(file),
|
|
57
|
+
};
|
|
58
|
+
core_1.CliUx.ux.action.start('Issuing VC');
|
|
59
|
+
const issuanceId = await issuance_1.issuanceService.createIssuance(apiKeyHash, token, issuanceJson);
|
|
60
|
+
const offer = await issuance_1.issuanceService.createOffer(apiKeyHash, token, issuanceId.id, offerInput);
|
|
61
|
+
core_1.CliUx.ux.action.stop('');
|
|
62
|
+
core_1.CliUx.ux.info(JSON.stringify(offer, null, ' '));
|
|
63
|
+
}
|
|
64
|
+
async catch(error) {
|
|
65
|
+
if (error instanceof SyntaxError) {
|
|
66
|
+
core_1.CliUx.ux.info(errors_1.JsonFileSyntaxError.message);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
core_1.CliUx.ux.info(error.toString());
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.default = IssueVc;
|
|
74
|
+
IssueVc.description = 'Issues a verifiable credential based on an given schema';
|
|
75
|
+
IssueVc.examples = ['<%= config.bin %> <%= command.id %>'];
|
|
76
|
+
IssueVc.flags = {
|
|
77
|
+
schema: core_1.Flags.string({ char: 's', description: 'json schema url', required: true }),
|
|
78
|
+
data: core_1.Flags.string({
|
|
79
|
+
char: 'd',
|
|
80
|
+
description: 'source json file with credential data',
|
|
81
|
+
required: true,
|
|
82
|
+
}),
|
|
83
|
+
};
|
|
84
|
+
IssueVc.args = [{ name: 'email' }];
|
|
85
|
+
//# sourceMappingURL=issue-vc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-vc.js","sourceRoot":"","sources":["../../src/commands/issue-vc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const texts_1 = require("../../render/texts");
|
|
5
|
+
class List extends core_1.Command {
|
|
6
|
+
async run() {
|
|
7
|
+
core_1.CliUx.ux.log(List.summary);
|
|
8
|
+
core_1.CliUx.ux.log(List.description);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.default = List;
|
|
12
|
+
List.summary = 'The list command to display various resources';
|
|
13
|
+
List.description = texts_1.listCommandDescription;
|
|
14
|
+
List.examples = [
|
|
15
|
+
{
|
|
16
|
+
description: 'Shows you the list of your projects',
|
|
17
|
+
command: '$ <%= config.bin %> <%= command.id %> projects',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
description: 'Shows a list of available schemas',
|
|
21
|
+
command: '$ <%= config.bin %> <%= command.id %> schemas',
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/list/index.ts"],"names":[],"mappings":";;AAAA,sCAAwD;AAExD,8CAA2D;AAE3D,MAAqB,IAAK,SAAQ,cAAO;IAgBhC,KAAK,CAAC,GAAG;QACd,YAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,YAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAChC,CAAC;;AAnBH,uBAoBC;AAnBQ,YAAO,GAAG,+CAA+C,CAAA;AAEzD,gBAAW,GAAG,8BAAsB,CAAA;AAEpC,aAAQ,GAAyB;IACtC;QACE,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,gDAAgD;KAC1D;IACD;QACE,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,+CAA+C;KACzD;CACF,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
declare type ListProjectsOutputType = 'json' | 'table' | 'json-file' | 'csv-file';
|
|
3
|
+
export default class Projects extends Command {
|
|
4
|
+
static enableJsonFlag: boolean;
|
|
5
|
+
static description: string;
|
|
6
|
+
static examples: string[];
|
|
7
|
+
static flags: {
|
|
8
|
+
skip: import("@oclif/core/lib/interfaces").OptionFlag<number>;
|
|
9
|
+
limit: import("@oclif/core/lib/interfaces").OptionFlag<number>;
|
|
10
|
+
output: import("@oclif/core/lib/interfaces").OptionFlag<ListProjectsOutputType>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
catch(error: Error): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const fs = tslib_1.__importStar(require("fs/promises"));
|
|
6
|
+
const csv_stringify_1 = require("csv-stringify");
|
|
7
|
+
const services_1 = require("../../services");
|
|
8
|
+
const user_management_1 = require("../../services/user-management");
|
|
9
|
+
class Projects extends core_1.Command {
|
|
10
|
+
async run() {
|
|
11
|
+
var _a;
|
|
12
|
+
const { flags } = await this.parse(Projects);
|
|
13
|
+
const token = (_a = (0, user_management_1.getSession)()) === null || _a === void 0 ? void 0 : _a.accessToken;
|
|
14
|
+
core_1.CliUx.ux.action.start('Fetching list of projects');
|
|
15
|
+
const projectData = await services_1.iAmService.listProjects(token, flags.skip, flags.limit);
|
|
16
|
+
core_1.CliUx.ux.action.stop();
|
|
17
|
+
switch (flags.output) {
|
|
18
|
+
case 'table':
|
|
19
|
+
core_1.CliUx.ux.table(projectData.map((data) => ({
|
|
20
|
+
projectId: data.projectId,
|
|
21
|
+
name: data.name,
|
|
22
|
+
createdAt: data.createdAt,
|
|
23
|
+
})), { projectId: {}, name: {}, createdAt: {} });
|
|
24
|
+
break;
|
|
25
|
+
case 'json-file':
|
|
26
|
+
await fs.writeFile('projects.json', JSON.stringify(projectData, null, ' '));
|
|
27
|
+
break;
|
|
28
|
+
case 'csv-file':
|
|
29
|
+
await fs.writeFile('projects.csv', (0, csv_stringify_1.stringify)(projectData, { header: true }));
|
|
30
|
+
break;
|
|
31
|
+
case 'json':
|
|
32
|
+
core_1.CliUx.ux.info(JSON.stringify(projectData, null, ' '));
|
|
33
|
+
break;
|
|
34
|
+
default:
|
|
35
|
+
core_1.CliUx.ux.error('Unknown output format');
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async catch(error) {
|
|
40
|
+
core_1.CliUx.ux.action.stop("Projects can't be fetched.");
|
|
41
|
+
core_1.CliUx.ux.info(error === null || error === void 0 ? void 0 : error.message);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = Projects;
|
|
45
|
+
Projects.enableJsonFlag = true;
|
|
46
|
+
Projects.description = 'Perform the action of listing all the projects you created';
|
|
47
|
+
Projects.examples = [
|
|
48
|
+
'<%= config.bin %> <%= command.id %>',
|
|
49
|
+
'<%= config.bin %> <%= command.id %> --skip=2 --limit=5 --output=csv-file',
|
|
50
|
+
];
|
|
51
|
+
Projects.flags = {
|
|
52
|
+
skip: core_1.Flags.integer({
|
|
53
|
+
char: 's',
|
|
54
|
+
description: 'Index into projects list from which to start the listing',
|
|
55
|
+
default: 0,
|
|
56
|
+
}),
|
|
57
|
+
limit: core_1.Flags.integer({
|
|
58
|
+
char: 'l',
|
|
59
|
+
description: 'Maximum number of projects which will be listed',
|
|
60
|
+
default: 10,
|
|
61
|
+
}),
|
|
62
|
+
output: core_1.Flags.enum({
|
|
63
|
+
char: 'o',
|
|
64
|
+
description: 'Project listing output format',
|
|
65
|
+
default: 'json',
|
|
66
|
+
options: ['json', 'table', 'json-file', 'csv-file'],
|
|
67
|
+
}),
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/commands/list/projects.ts"],"names":[],"mappings":";;;AAAA,sCAAmD;AACnD,wDAAiC;AACjC,iDAA0D;AAE1D,6CAA2C;AAC3C,oEAA2D;AAI3D,MAAqB,QAAS,SAAQ,cAAO;IA6BpC,KAAK,CAAC,GAAG;;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAE5C,MAAM,KAAK,GAAG,MAAA,IAAA,4BAAU,GAAE,0CAAE,WAAW,CAAA;QAEvC,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAClD,MAAM,WAAW,GAAG,MAAM,qBAAU,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACjF,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAEtB,QAAQ,KAAK,CAAC,MAAM,EAAE;YACpB,KAAK,OAAO;gBACV,YAAK,CAAC,EAAE,CAAC,KAAK,CACZ,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC,EACH,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAC3C,CAAA;gBACD,MAAK;YACP,KAAK,WAAW;gBACd,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;gBAC5E,MAAK;YACP,KAAK,UAAU;gBACb,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,IAAA,yBAAa,EAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAChF,MAAK;YACP,KAAK,MAAM;gBACT,YAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;gBACtD,MAAK;YACP;gBACE,YAAK,CAAC,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;gBACvC,MAAK;SACR;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAY;QACtB,YAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QAClD,YAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAA;IAC/B,CAAC;;AAnEH,2BAoEC;AAnEe,uBAAc,GAAG,IAAI,CAAA;AAE5B,oBAAW,GAAG,4DAA4D,CAAA;AAE1E,iBAAQ,GAAG;IAChB,qCAAqC;IACrC,0EAA0E;CAC3E,CAAA;AAEM,cAAK,GAAG;IACb,IAAI,EAAE,YAAK,CAAC,OAAO,CAAC;QAClB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,CAAC;KACX,CAAC;IACF,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,IAAI,CAAyB;QACzC,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;KACpD,CAAC;CACH,CAAA"}
|