casualos 3.3.0-alpha.8545776335
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/LICENSE.txt +21 -0
- package/README.md +118 -0
- package/cli.d.ts +2 -0
- package/cli.js +496 -0
- package/cli.js.map +1 -0
- package/index.d.ts +3 -0
- package/index.js +3 -0
- package/index.js.map +1 -0
- package/package.json +58 -0
- package/schema.d.ts +3 -0
- package/schema.js +213 -0
- package/schema.js.map +1 -0
package/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Casual Simulation, Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# CasualOS CLI
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/casualos)
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Install to your global package directory:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
$ npm install -g casualos
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or, execute directly from NPM:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
$ npx casualos
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Usage: casualos [options] [command]
|
|
23
|
+
|
|
24
|
+
A CLI for CasualOS
|
|
25
|
+
|
|
26
|
+
Options:
|
|
27
|
+
-V, --version output the version number
|
|
28
|
+
-e, --endpoint <url> The endpoint to use for queries. Can be used to override the current endpoint.
|
|
29
|
+
-h, --help display help for command
|
|
30
|
+
|
|
31
|
+
Commands:
|
|
32
|
+
login Login to the CasualOS API
|
|
33
|
+
logout Logout of the CasualOS API
|
|
34
|
+
set-endpoint [endpoint] Set the endpoint that is currently in use.
|
|
35
|
+
status Get the status of the current session.
|
|
36
|
+
query [options] [procedure] [input] Query the CasualOS API
|
|
37
|
+
repl [options] Start a REPL for the CasualOS API
|
|
38
|
+
help [command] display help for command
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Commands
|
|
42
|
+
|
|
43
|
+
#### `login`
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
$ casualos help login
|
|
47
|
+
|
|
48
|
+
Usage: casualos login [options]
|
|
49
|
+
|
|
50
|
+
Login to the CasualOS API
|
|
51
|
+
|
|
52
|
+
Options:
|
|
53
|
+
-h, --help display help for command
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### `logout`
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
$ casualos help logout
|
|
60
|
+
|
|
61
|
+
Usage: casualos logout [options]
|
|
62
|
+
|
|
63
|
+
Logout of the CasualOS API
|
|
64
|
+
|
|
65
|
+
Options:
|
|
66
|
+
-h, --help display help for command
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### `set-endpoint`
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
$ casualos help set-endpoint
|
|
73
|
+
|
|
74
|
+
Usage: casualos set-endpoint [options] [endpoint]
|
|
75
|
+
|
|
76
|
+
Set the endpoint that is currently in use.
|
|
77
|
+
|
|
78
|
+
Arguments:
|
|
79
|
+
endpoint The endpoint to use for queries. If omitted, then you will be prompted to enter an endpoint.
|
|
80
|
+
|
|
81
|
+
Options:
|
|
82
|
+
-h, --help display help for command
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### `query`
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
$ casualos help query
|
|
89
|
+
|
|
90
|
+
Usage: casualos query [options] [procedure] [input]
|
|
91
|
+
|
|
92
|
+
Query the CasualOS API
|
|
93
|
+
|
|
94
|
+
Arguments:
|
|
95
|
+
procedure The procedure to execute. If omitted, then you will be prompted to select a procedure.
|
|
96
|
+
input The input to the procedure. If specified, then it will be parsed as JSON. If omitted, then you will be prompted to enter the input.
|
|
97
|
+
|
|
98
|
+
Options:
|
|
99
|
+
-k, --key <key> The session key to use for the query. If not specified, then the current session key will be used.
|
|
100
|
+
-h, --help display help for command
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### `repl`
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
$ casualos help repl
|
|
107
|
+
|
|
108
|
+
Usage: casualos repl [options]
|
|
109
|
+
|
|
110
|
+
Start a REPL for the CasualOS API
|
|
111
|
+
|
|
112
|
+
Options:
|
|
113
|
+
-k, --key <key> The session key to use for the session. If omitted, then the current session key will be used.
|
|
114
|
+
-h, --help display help for command
|
|
115
|
+
|
|
116
|
+
The CasualOS REPL allows you to interact with the CasualOS API using a Read-Eval-Print Loop (REPL).
|
|
117
|
+
It supports JavaScript and has a special function, query([procedure], [input]), that can be used to query the API.
|
|
118
|
+
```
|
package/cli.d.ts
ADDED
package/cli.js
ADDED
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import prompts from 'prompts';
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
import { createRecordsClient, } from '@casual-simulation/aux-records/RecordsClient';
|
|
13
|
+
import { askForInputs } from './schema';
|
|
14
|
+
import repl from 'node:repl';
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
import Conf from 'conf';
|
|
17
|
+
import { parseSessionKey } from '@casual-simulation/aux-records/AuthUtils';
|
|
18
|
+
import { PassThrough } from 'node:stream';
|
|
19
|
+
const REFRESH_LIFETIME_MS = 1000 * 60 * 60 * 24 * 7; // 1 week
|
|
20
|
+
const config = new Conf({
|
|
21
|
+
projectName: 'casualos-cli',
|
|
22
|
+
});
|
|
23
|
+
const program = new Command();
|
|
24
|
+
program
|
|
25
|
+
.name('casualos')
|
|
26
|
+
.description('A CLI for CasualOS')
|
|
27
|
+
.version('0.0.1')
|
|
28
|
+
.option('-e, --endpoint <url>', 'The endpoint to use for queries. Can be used to override the current endpoint.');
|
|
29
|
+
program
|
|
30
|
+
.command('login')
|
|
31
|
+
.description('Login to the CasualOS API')
|
|
32
|
+
.action(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
const opts = program.optsWithGlobals();
|
|
34
|
+
const endpoint = yield getEndpoint(opts.endpoint);
|
|
35
|
+
const client = yield getClient(endpoint, getSessionKey(endpoint));
|
|
36
|
+
yield login(client);
|
|
37
|
+
}));
|
|
38
|
+
program
|
|
39
|
+
.command('logout')
|
|
40
|
+
.description('Logout of the CasualOS API')
|
|
41
|
+
.action(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
|
+
const opts = program.optsWithGlobals();
|
|
43
|
+
const endpoint = yield getEndpoint(opts.endpoint);
|
|
44
|
+
saveSessionKey(endpoint, null);
|
|
45
|
+
console.log('Logged out!');
|
|
46
|
+
}));
|
|
47
|
+
program
|
|
48
|
+
.command('set-endpoint')
|
|
49
|
+
.argument('[endpoint]', 'The endpoint to use for queries. If omitted, then you will be prompted to enter an endpoint.')
|
|
50
|
+
.description('Set the endpoint that is currently in use.')
|
|
51
|
+
.action((endpoint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
+
if (endpoint) {
|
|
53
|
+
saveCurrentEndpoint(endpoint);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
yield updateEndpoint();
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
program
|
|
60
|
+
.command('status')
|
|
61
|
+
.description('Get the status of the current session.')
|
|
62
|
+
.action(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
63
|
+
const endpoint = getCurrentEndpoint();
|
|
64
|
+
printStatus(endpoint);
|
|
65
|
+
}));
|
|
66
|
+
program
|
|
67
|
+
.command('query')
|
|
68
|
+
.description('Query the CasualOS API')
|
|
69
|
+
.argument('[procedure]', 'The procedure to execute. If omitted, then you will be prompted to select a procedure.')
|
|
70
|
+
.argument('[input]', 'The input to the procedure. If specified, then it will be parsed as JSON. If omitted, then you will be prompted to enter the input.')
|
|
71
|
+
.option('-k, --key <key>', 'The session key to use for the query. If not specified, then the current session key will be used.')
|
|
72
|
+
.action((procedure, input, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
|
+
var _a;
|
|
74
|
+
const opts = program.optsWithGlobals();
|
|
75
|
+
const endpoint = yield getEndpoint(opts.endpoint);
|
|
76
|
+
const client = yield getClient(endpoint, (_a = opts.key) !== null && _a !== void 0 ? _a : (yield getOrRefreshSessionKey(endpoint)));
|
|
77
|
+
yield query(client, procedure, input);
|
|
78
|
+
}));
|
|
79
|
+
program
|
|
80
|
+
.command('repl')
|
|
81
|
+
.description('Start a REPL for the CasualOS API')
|
|
82
|
+
.option('-k, --key <key>', 'The session key to use for the session. If omitted, then the current session key will be used.')
|
|
83
|
+
.addHelpText('after', `\nThe CasualOS REPL allows you to interact with the CasualOS API using a Read-Eval-Print Loop (REPL).\nIt supports JavaScript and has a special function, query([procedure], [input]), that can be used to query the API.`)
|
|
84
|
+
.action((options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
|
+
var _b;
|
|
86
|
+
const opts = program.optsWithGlobals();
|
|
87
|
+
const endpoint = yield getEndpoint(opts.endpoint);
|
|
88
|
+
const client = yield getClient(endpoint, (_b = opts.key) !== null && _b !== void 0 ? _b : (yield getOrRefreshSessionKey(endpoint)));
|
|
89
|
+
const replIn = new PassThrough();
|
|
90
|
+
process.stdin.pipe(replIn);
|
|
91
|
+
function pauseRepl(func) {
|
|
92
|
+
return (...args) => __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
process.stdin.unpipe(replIn);
|
|
94
|
+
replIn.pause();
|
|
95
|
+
try {
|
|
96
|
+
return yield func(...args);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
replIn.resume();
|
|
100
|
+
process.stdin.pipe(replIn);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
const replServer = repl.start({
|
|
105
|
+
prompt: 'casualos > ',
|
|
106
|
+
input: replIn,
|
|
107
|
+
output: process.stdout,
|
|
108
|
+
});
|
|
109
|
+
replServer.on('exit', () => {
|
|
110
|
+
process.stdin.unpipe(replIn);
|
|
111
|
+
});
|
|
112
|
+
replServer.defineCommand('login', {
|
|
113
|
+
help: 'Login to the CasualOS API',
|
|
114
|
+
action(cmd) {
|
|
115
|
+
console.log('command: ', cmd);
|
|
116
|
+
const _this = this;
|
|
117
|
+
function loginImpl() {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
try {
|
|
120
|
+
_this.pause();
|
|
121
|
+
yield login(client);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
_this.resume();
|
|
125
|
+
_this.displayPrompt();
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
loginImpl();
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
Object.defineProperties(replServer.context, {
|
|
133
|
+
query: {
|
|
134
|
+
configurable: false,
|
|
135
|
+
writable: false,
|
|
136
|
+
enumerable: true,
|
|
137
|
+
value: pauseRepl((procedure, input) => __awaiter(void 0, void 0, void 0, function* () {
|
|
138
|
+
return yield query(client, procedure, input, false, true);
|
|
139
|
+
})),
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
}));
|
|
143
|
+
function query(client, procedure, input, shouldConfirm = true, isJavaScriptInput = false) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
const availableOperations = yield client.listProcedures({});
|
|
146
|
+
if (!procedure) {
|
|
147
|
+
const response = yield prompts({
|
|
148
|
+
type: 'select',
|
|
149
|
+
name: 'procedure',
|
|
150
|
+
message: 'Select the procedure to execute',
|
|
151
|
+
choices: availableOperations.procedures.map((op) => ({
|
|
152
|
+
title: op.name,
|
|
153
|
+
value: op.name,
|
|
154
|
+
})),
|
|
155
|
+
});
|
|
156
|
+
procedure = response.procedure;
|
|
157
|
+
}
|
|
158
|
+
const operation = availableOperations.procedures.find((p) => p.name === procedure);
|
|
159
|
+
if (!operation) {
|
|
160
|
+
console.error(`Could not find operation ${procedure}!`);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
console.log('Your selected operation:', operation);
|
|
164
|
+
if (!input) {
|
|
165
|
+
input = yield askForInputs(operation.inputs, operation.name);
|
|
166
|
+
}
|
|
167
|
+
else if (!isJavaScriptInput) {
|
|
168
|
+
input = JSON.parse(input);
|
|
169
|
+
}
|
|
170
|
+
console.log('Your input:', input);
|
|
171
|
+
let continueRequest = true;
|
|
172
|
+
if (shouldConfirm) {
|
|
173
|
+
const confirm = yield prompts({
|
|
174
|
+
type: 'confirm',
|
|
175
|
+
name: 'continue',
|
|
176
|
+
message: 'Do you want to continue?',
|
|
177
|
+
initial: true,
|
|
178
|
+
});
|
|
179
|
+
continueRequest = confirm.continue;
|
|
180
|
+
}
|
|
181
|
+
if (continueRequest) {
|
|
182
|
+
const result = yield callProcedure(client, operation.name, input);
|
|
183
|
+
if (shouldConfirm) {
|
|
184
|
+
console.log('Result:', result);
|
|
185
|
+
}
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
console.log('Cancelled.');
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function callProcedure(client, operation, input) {
|
|
194
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
195
|
+
while (true) {
|
|
196
|
+
const result = yield client.callProcedure(operation, input, {
|
|
197
|
+
headers: getHeaders(client),
|
|
198
|
+
});
|
|
199
|
+
if (result.success === false && result.errorCode === 'not_logged_in') {
|
|
200
|
+
const loginResponse = yield prompts({
|
|
201
|
+
type: 'confirm',
|
|
202
|
+
name: 'login',
|
|
203
|
+
message: 'You are not logged in. Do you want to log in and try again?',
|
|
204
|
+
initial: true,
|
|
205
|
+
});
|
|
206
|
+
if (loginResponse.login) {
|
|
207
|
+
const key = yield login(client);
|
|
208
|
+
if (!key) {
|
|
209
|
+
return result;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
return result;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
function getClient(endpoint, key) {
|
|
223
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
224
|
+
printStatus(endpoint);
|
|
225
|
+
const client = createRecordsClient(endpoint);
|
|
226
|
+
if (key) {
|
|
227
|
+
client.sessionKey = key;
|
|
228
|
+
}
|
|
229
|
+
return client;
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
function getOrRefreshSessionKey(endpoint) {
|
|
233
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
const key = getSessionKey(endpoint);
|
|
235
|
+
if (isExpired(key)) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
else if (willExpire(key)) {
|
|
239
|
+
return yield replaceSessionKey(endpoint, key);
|
|
240
|
+
}
|
|
241
|
+
return key;
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
function getSessionKey(endpoint) {
|
|
245
|
+
return convertToString(config.get(`${endpoint}:sessionKey`));
|
|
246
|
+
}
|
|
247
|
+
function saveSessionKey(endpoint, key) {
|
|
248
|
+
config.set(`${endpoint}:sessionKey`, key);
|
|
249
|
+
}
|
|
250
|
+
function saveLoginResult(client, result) {
|
|
251
|
+
if (!result) {
|
|
252
|
+
saveSessionKey(client.endpoint, null);
|
|
253
|
+
client.sessionKey = null;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
saveSessionKey(client.endpoint, result.sessionKey);
|
|
257
|
+
client.sessionKey = result.sessionKey;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
function getExpiration(key) {
|
|
261
|
+
const parsed = parseSessionKey(key);
|
|
262
|
+
if (!parsed) {
|
|
263
|
+
return 0;
|
|
264
|
+
}
|
|
265
|
+
const [userId, sessionId, secret, expireTimeMs] = parsed;
|
|
266
|
+
return expireTimeMs;
|
|
267
|
+
}
|
|
268
|
+
function isExpired(key) {
|
|
269
|
+
const expireTimeMs = getExpiration(key);
|
|
270
|
+
return expireTimeMs < Date.now();
|
|
271
|
+
}
|
|
272
|
+
function willExpire(key) {
|
|
273
|
+
const expireTimeMs = getExpiration(key);
|
|
274
|
+
const lifetimeMs = expireTimeMs - Date.now();
|
|
275
|
+
const refreshTimeMs = Math.max(lifetimeMs - REFRESH_LIFETIME_MS, 0);
|
|
276
|
+
return refreshTimeMs < 0;
|
|
277
|
+
}
|
|
278
|
+
function login(client) {
|
|
279
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
280
|
+
const response = yield prompts([
|
|
281
|
+
{
|
|
282
|
+
type: 'select',
|
|
283
|
+
name: 'type',
|
|
284
|
+
message: 'Select the type of address to use for login.',
|
|
285
|
+
choices: [
|
|
286
|
+
{
|
|
287
|
+
title: 'Email',
|
|
288
|
+
value: 'email',
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
title: 'Phone',
|
|
292
|
+
value: 'phone',
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
title: 'Privo',
|
|
296
|
+
value: 'privo',
|
|
297
|
+
},
|
|
298
|
+
],
|
|
299
|
+
},
|
|
300
|
+
]);
|
|
301
|
+
if (response.type === 'privo') {
|
|
302
|
+
return yield loginWithPrivo(client);
|
|
303
|
+
}
|
|
304
|
+
else if (response.type === 'email' || response.type === 'phone') {
|
|
305
|
+
const addressResponse = yield prompts({
|
|
306
|
+
type: 'text',
|
|
307
|
+
name: 'address',
|
|
308
|
+
message: 'Enter your address.',
|
|
309
|
+
});
|
|
310
|
+
const addressType = response.type;
|
|
311
|
+
const address = addressResponse.address;
|
|
312
|
+
return yield loginWithCode(client, address, addressType);
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
function loginWithCode(client, address, addressType) {
|
|
317
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
318
|
+
const result = yield client.requestLogin({
|
|
319
|
+
address: address,
|
|
320
|
+
addressType: addressType,
|
|
321
|
+
}, {
|
|
322
|
+
headers: getHeaders(client),
|
|
323
|
+
});
|
|
324
|
+
if (result.success) {
|
|
325
|
+
const response = yield prompts({
|
|
326
|
+
type: 'text',
|
|
327
|
+
name: 'code',
|
|
328
|
+
message: 'Enter the code that was sent to your address.',
|
|
329
|
+
});
|
|
330
|
+
const code = response.code;
|
|
331
|
+
const loginResult = yield client.completeLogin({
|
|
332
|
+
code: code,
|
|
333
|
+
requestId: result.requestId,
|
|
334
|
+
userId: result.userId,
|
|
335
|
+
}, {
|
|
336
|
+
headers: getHeaders(client),
|
|
337
|
+
});
|
|
338
|
+
if (loginResult.success === true) {
|
|
339
|
+
saveLoginResult(client, loginResult);
|
|
340
|
+
console.log('Login successful!');
|
|
341
|
+
return loginResult.sessionKey;
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
saveLoginResult(client, null);
|
|
345
|
+
console.log('Failed to complete login:');
|
|
346
|
+
console.log(loginResult);
|
|
347
|
+
return null;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
saveLoginResult(client, null);
|
|
352
|
+
console.log('Failed to create login request:');
|
|
353
|
+
console.log(result);
|
|
354
|
+
return null;
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
function loginWithPrivo(client) {
|
|
359
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
360
|
+
const result = yield client.requestPrivoLogin({}, {
|
|
361
|
+
headers: getHeaders(client),
|
|
362
|
+
});
|
|
363
|
+
if (result.success === false) {
|
|
364
|
+
saveLoginResult(client, null);
|
|
365
|
+
console.log('Failed to request Privo login:');
|
|
366
|
+
console.log(result);
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
const open = (yield import('open')).default;
|
|
370
|
+
yield open(result.authorizationUrl);
|
|
371
|
+
const startTime = Date.now();
|
|
372
|
+
const timeout = 1000 * 60 * 5; // 5 minutes
|
|
373
|
+
while (Date.now() - startTime < timeout) {
|
|
374
|
+
const loginResult = yield client.completeOAuthLogin({
|
|
375
|
+
requestId: result.requestId,
|
|
376
|
+
}, {
|
|
377
|
+
headers: getHeaders(client),
|
|
378
|
+
});
|
|
379
|
+
if (loginResult.success === true) {
|
|
380
|
+
saveLoginResult(client, loginResult);
|
|
381
|
+
console.log('Login successful!');
|
|
382
|
+
return loginResult.sessionKey;
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
if (loginResult.errorCode === 'not_completed') {
|
|
386
|
+
// Wait for a second before trying again.
|
|
387
|
+
yield new Promise((resolve) => setTimeout(resolve, 1000));
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
saveLoginResult(client, null);
|
|
391
|
+
console.log('Failed to complete login:');
|
|
392
|
+
console.log(loginResult);
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
saveLoginResult(client, null);
|
|
398
|
+
console.log('Failed to complete login:');
|
|
399
|
+
console.log('Timed out');
|
|
400
|
+
return null;
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
function replaceSessionKey(endpoint, key) {
|
|
404
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
405
|
+
const client = yield getClient(endpoint, key);
|
|
406
|
+
const result = yield client.replaceSession(undefined, {
|
|
407
|
+
sessionKey: key,
|
|
408
|
+
});
|
|
409
|
+
if (result.success === true) {
|
|
410
|
+
saveSessionKey(endpoint, result.sessionKey);
|
|
411
|
+
console.log('Session key replaced!');
|
|
412
|
+
return result.sessionKey;
|
|
413
|
+
}
|
|
414
|
+
saveSessionKey(endpoint, null);
|
|
415
|
+
console.log('Failed to replace session key:');
|
|
416
|
+
console.log(result);
|
|
417
|
+
return null;
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
function getEndpoint(endpoint) {
|
|
421
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
422
|
+
if (endpoint) {
|
|
423
|
+
return endpoint;
|
|
424
|
+
}
|
|
425
|
+
let savedEndpoint = getCurrentEndpoint();
|
|
426
|
+
console.log('saved endpoint', savedEndpoint);
|
|
427
|
+
if (!savedEndpoint) {
|
|
428
|
+
savedEndpoint = yield updateEndpoint();
|
|
429
|
+
}
|
|
430
|
+
return savedEndpoint;
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
function getCurrentEndpoint() {
|
|
434
|
+
return convertToString(config.get('currentEndpoint'));
|
|
435
|
+
}
|
|
436
|
+
function updateEndpoint() {
|
|
437
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
438
|
+
const response = yield prompts({
|
|
439
|
+
type: 'text',
|
|
440
|
+
name: 'endpoint',
|
|
441
|
+
message: 'Enter the endpoint to use for queries.',
|
|
442
|
+
});
|
|
443
|
+
const savedEndpoint = response.endpoint;
|
|
444
|
+
saveCurrentEndpoint(savedEndpoint);
|
|
445
|
+
return savedEndpoint;
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
function saveCurrentEndpoint(endpoint) {
|
|
449
|
+
config.set('currentEndpoint', endpoint);
|
|
450
|
+
console.log('Endpoint updated to:', endpoint);
|
|
451
|
+
}
|
|
452
|
+
function getHeaders(client) {
|
|
453
|
+
return {
|
|
454
|
+
origin: client.endpoint,
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
function printStatus(endpoint) {
|
|
458
|
+
if (!endpoint) {
|
|
459
|
+
console.log('No endpoint is currently set.');
|
|
460
|
+
console.log('Set an endpoint using the set-endpoint command.');
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
463
|
+
console.log('Current endpoint:', endpoint);
|
|
464
|
+
const key = getSessionKey(endpoint);
|
|
465
|
+
if (key) {
|
|
466
|
+
const expire = getExpiration(key);
|
|
467
|
+
if (expire < Date.now()) {
|
|
468
|
+
console.log('The current session has expired.');
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
console.log('You are logged in.');
|
|
472
|
+
console.log('Session expires at:', new Date(expire).toString());
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
console.log('You are not logged in.');
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
function main() {
|
|
480
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
481
|
+
try {
|
|
482
|
+
yield program.parseAsync(process.argv);
|
|
483
|
+
}
|
|
484
|
+
catch (err) {
|
|
485
|
+
console.error(err);
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
function convertToString(str) {
|
|
490
|
+
if (typeof str === 'undefined' || str === null) {
|
|
491
|
+
return str;
|
|
492
|
+
}
|
|
493
|
+
return String(str);
|
|
494
|
+
}
|
|
495
|
+
main();
|
|
496
|
+
//# sourceMappingURL=cli.js.map
|
package/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["cli.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
package/index.js
ADDED
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "casualos",
|
|
3
|
+
"version": "3.3.0-alpha.8545776335",
|
|
4
|
+
"description": "Common library for AUX Vue components and Misc",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "index.d.ts",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"bin": {
|
|
9
|
+
"casualos": "./dist/cli.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"start": "node ./dist/cli.js",
|
|
13
|
+
"dev": "npm run build && npm start",
|
|
14
|
+
"build": "node ./script/build-cli.mjs",
|
|
15
|
+
"test": "jest",
|
|
16
|
+
"test:watch": "jest --watchAll"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/casual-simulation/casualos.git"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"aux",
|
|
24
|
+
"so4",
|
|
25
|
+
"realtime",
|
|
26
|
+
"crdt"
|
|
27
|
+
],
|
|
28
|
+
"author": "Casual Simulation, Inc.",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/casual-simulation/casualos/issues"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://github.com/casual-simulation/casualos#readme",
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@casual-simulation/aux-common": "^3.3.0-alpha.8545776335",
|
|
39
|
+
"@casual-simulation/aux-records": "^3.3.0-alpha.8545776335",
|
|
40
|
+
"axios": "1.6.2",
|
|
41
|
+
"commander": "12.0.0",
|
|
42
|
+
"conf": "12.0.0",
|
|
43
|
+
"open": "10.1.0",
|
|
44
|
+
"prompts": "2.4.2"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/prompts": "^2.4.9"
|
|
48
|
+
},
|
|
49
|
+
"files": [
|
|
50
|
+
"/README.md",
|
|
51
|
+
"/LICENSE.txt",
|
|
52
|
+
"**/*.js",
|
|
53
|
+
"**/*.js.map",
|
|
54
|
+
"**/*.d.ts",
|
|
55
|
+
"**/*.def"
|
|
56
|
+
],
|
|
57
|
+
"gitHead": "7b486be99c67a5dffcb401ebe8fa098bfa9aa7bc"
|
|
58
|
+
}
|
package/schema.d.ts
ADDED
package/schema.js
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import prompts from 'prompts';
|
|
11
|
+
export function askForInputs(inputs, name) {
|
|
12
|
+
var _a, _b, _c, _d;
|
|
13
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
if (inputs) {
|
|
15
|
+
if (inputs.type === 'object') {
|
|
16
|
+
return yield askForObjectInputs(inputs, name);
|
|
17
|
+
}
|
|
18
|
+
else if (inputs.type === 'string') {
|
|
19
|
+
const response = yield prompts({
|
|
20
|
+
type: 'text',
|
|
21
|
+
name: 'value',
|
|
22
|
+
message: `Enter a value for ${name}.`,
|
|
23
|
+
initial: (_a = inputs.defaultValue) !== null && _a !== void 0 ? _a : undefined,
|
|
24
|
+
});
|
|
25
|
+
return response.value || undefined;
|
|
26
|
+
}
|
|
27
|
+
else if (inputs.type === 'number') {
|
|
28
|
+
const response = yield prompts({
|
|
29
|
+
type: 'number',
|
|
30
|
+
name: 'value',
|
|
31
|
+
message: `Enter a number for ${name}.`,
|
|
32
|
+
initial: (_b = inputs.defaultValue) !== null && _b !== void 0 ? _b : undefined,
|
|
33
|
+
});
|
|
34
|
+
return typeof response.value === 'number'
|
|
35
|
+
? response.value
|
|
36
|
+
: undefined;
|
|
37
|
+
}
|
|
38
|
+
else if (inputs.type === 'boolean') {
|
|
39
|
+
const response = yield prompts({
|
|
40
|
+
type: 'toggle',
|
|
41
|
+
name: 'value',
|
|
42
|
+
message: `Enable ${name}?`,
|
|
43
|
+
initial: (_c = inputs.defaultValue) !== null && _c !== void 0 ? _c : undefined,
|
|
44
|
+
active: 'yes',
|
|
45
|
+
inactive: 'no',
|
|
46
|
+
});
|
|
47
|
+
return typeof response.value === 'boolean'
|
|
48
|
+
? response.value
|
|
49
|
+
: undefined;
|
|
50
|
+
}
|
|
51
|
+
else if (inputs.type === 'date') {
|
|
52
|
+
const response = yield prompts({
|
|
53
|
+
type: 'date',
|
|
54
|
+
name: 'value',
|
|
55
|
+
message: `Enter a date for ${name}.`,
|
|
56
|
+
initial: (_d = inputs.defaultValue) !== null && _d !== void 0 ? _d : undefined,
|
|
57
|
+
});
|
|
58
|
+
return response.value || undefined;
|
|
59
|
+
}
|
|
60
|
+
else if (inputs.type === 'literal') {
|
|
61
|
+
return inputs.value;
|
|
62
|
+
}
|
|
63
|
+
else if (inputs.type === 'array') {
|
|
64
|
+
return yield askForArrayInputs(inputs, name);
|
|
65
|
+
}
|
|
66
|
+
else if (inputs.type === 'enum') {
|
|
67
|
+
return yield askForEnumInputs(inputs, name);
|
|
68
|
+
}
|
|
69
|
+
else if (inputs.type === 'union') {
|
|
70
|
+
return yield askForUnionInputs(inputs, name);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function askForObjectInputs(inputs, name) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
const result = {};
|
|
79
|
+
for (let key in inputs.schema) {
|
|
80
|
+
const prop = inputs.schema[key];
|
|
81
|
+
const value = yield askForInputs(prop, `${name}.${key}`);
|
|
82
|
+
result[key] = value;
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function askForArrayInputs(inputs, name) {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
const result = [];
|
|
91
|
+
if (inputs.optional || inputs.nullable) {
|
|
92
|
+
const response = yield prompts({
|
|
93
|
+
type: 'confirm',
|
|
94
|
+
name: 'continue',
|
|
95
|
+
message: `Do you want to enter an array for ${name}?`,
|
|
96
|
+
});
|
|
97
|
+
if (!response.continue) {
|
|
98
|
+
if (inputs.nullable) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
let length = 0;
|
|
107
|
+
if (typeof inputs.exactLength === 'number') {
|
|
108
|
+
length = inputs.exactLength;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const response = yield prompts({
|
|
112
|
+
type: 'number',
|
|
113
|
+
name: 'length',
|
|
114
|
+
message: `Enter the length of the array for ${name}.`,
|
|
115
|
+
min: (_a = inputs.minLength) !== null && _a !== void 0 ? _a : undefined,
|
|
116
|
+
max: (_b = inputs.maxLength) !== null && _b !== void 0 ? _b : undefined,
|
|
117
|
+
});
|
|
118
|
+
length = response.length;
|
|
119
|
+
}
|
|
120
|
+
for (let i = 0; i < length; i++) {
|
|
121
|
+
const value = yield askForInputs(inputs.schema, `${name}[${i}]`);
|
|
122
|
+
result.push(value);
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function askForEnumInputs(inputs, name) {
|
|
128
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
let choices = inputs.values.map((value) => ({
|
|
130
|
+
title: value,
|
|
131
|
+
value: value,
|
|
132
|
+
}));
|
|
133
|
+
if (inputs.nullable) {
|
|
134
|
+
choices = [
|
|
135
|
+
{
|
|
136
|
+
title: '(null)',
|
|
137
|
+
value: '',
|
|
138
|
+
},
|
|
139
|
+
...choices,
|
|
140
|
+
];
|
|
141
|
+
}
|
|
142
|
+
if (inputs.optional) {
|
|
143
|
+
choices = [
|
|
144
|
+
{
|
|
145
|
+
title: '(undefined)',
|
|
146
|
+
value: '',
|
|
147
|
+
},
|
|
148
|
+
...choices,
|
|
149
|
+
];
|
|
150
|
+
}
|
|
151
|
+
const response = yield prompts({
|
|
152
|
+
type: 'select',
|
|
153
|
+
name: 'value',
|
|
154
|
+
message: `Select a value for ${name}.`,
|
|
155
|
+
choices: choices,
|
|
156
|
+
});
|
|
157
|
+
if (response.value === '') {
|
|
158
|
+
if (inputs.nullable) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return response.value;
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function askForUnionInputs(inputs, name) {
|
|
169
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
170
|
+
if ('discriminator' in inputs) {
|
|
171
|
+
return yield askForDiscriminatedUnionInputs(inputs, name);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
const kind = yield prompts({
|
|
175
|
+
type: 'select',
|
|
176
|
+
name: 'kind',
|
|
177
|
+
message: `Select a kind for ${name}.`,
|
|
178
|
+
choices: inputs.options.map((option) => ({
|
|
179
|
+
title: option.type,
|
|
180
|
+
description: option.description,
|
|
181
|
+
value: option,
|
|
182
|
+
})),
|
|
183
|
+
});
|
|
184
|
+
return yield askForInputs(kind.kind, name);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
function askForDiscriminatedUnionInputs(inputs, name) {
|
|
189
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
190
|
+
const kind = yield prompts({
|
|
191
|
+
type: 'select',
|
|
192
|
+
name: 'kind',
|
|
193
|
+
message: `Select a ${inputs.discriminator} for ${name}.`,
|
|
194
|
+
choices: inputs.options.map((option) => {
|
|
195
|
+
const prop = option.schema[inputs.discriminator];
|
|
196
|
+
if (prop.type !== 'literal') {
|
|
197
|
+
return {
|
|
198
|
+
title: option.type,
|
|
199
|
+
description: option.description,
|
|
200
|
+
value: option,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
title: prop.value,
|
|
205
|
+
description: option.description,
|
|
206
|
+
value: option,
|
|
207
|
+
};
|
|
208
|
+
}),
|
|
209
|
+
});
|
|
210
|
+
return yield askForInputs(kind.kind, name);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=schema.js.map
|
package/schema.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAU9B,MAAM,UAAgB,YAAY,CAC9B,MAAsB,EACtB,IAAY;;;QAEZ,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO,MAAM,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;oBAC3B,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,qBAAqB,IAAI,GAAG;oBACrC,OAAO,EAAE,MAAA,MAAM,CAAC,YAAY,mCAAI,SAAS;iBAC5C,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC;YACvC,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;oBAC3B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,sBAAsB,IAAI,GAAG;oBACtC,OAAO,EAAE,MAAA,MAAM,CAAC,YAAY,mCAAI,SAAS;iBAC5C,CAAC,CAAC;gBAEH,OAAO,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;oBACrC,CAAC,CAAC,QAAQ,CAAC,KAAK;oBAChB,CAAC,CAAC,SAAS,CAAC;YACpB,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;oBAC3B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,UAAU,IAAI,GAAG;oBAC1B,OAAO,EAAE,MAAA,MAAM,CAAC,YAAY,mCAAI,SAAS;oBACzC,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC;gBAEH,OAAO,OAAO,QAAQ,CAAC,KAAK,KAAK,SAAS;oBACtC,CAAC,CAAC,QAAQ,CAAC,KAAK;oBAChB,CAAC,CAAC,SAAS,CAAC;YACpB,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;oBAC3B,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,oBAAoB,IAAI,GAAG;oBACpC,OAAO,EAAE,MAAA,MAAM,CAAC,YAAY,mCAAI,SAAS;iBAC5C,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC;YACvC,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,MAAM,CAAC,KAAK,CAAC;YACxB,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjC,OAAO,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChC,OAAO,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjC,OAAO,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;;CACpB;AAED,SAAe,kBAAkB,CAC7B,MAA4B,EAC5B,IAAY;;QAEZ,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA;AAED,SAAe,iBAAiB,CAC5B,MAA2B,EAC3B,IAAY;;;QAEZ,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;gBAC3B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,qCAAqC,IAAI,GAAG;aACxD,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACrB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,IAAI,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;gBAC3B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,qCAAqC,IAAI,GAAG;gBACrD,GAAG,EAAE,MAAA,MAAM,CAAC,SAAS,mCAAI,SAAS;gBAClC,GAAG,EAAE,MAAA,MAAM,CAAC,SAAS,mCAAI,SAAS;aACrC,CAAC,CAAC;YACH,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,MAAM,CAAC;;CACjB;AAED,SAAe,gBAAgB,CAC3B,MAA0B,EAC1B,IAAY;;QAEZ,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;SACf,CAAC,CAAC,CAAC;QACJ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,GAAG;gBACN;oBACI,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,EAAE;iBACZ;gBACD,GAAG,OAAO;aACb,CAAC;QACN,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,GAAG;gBACN;oBACI,KAAK,EAAE,aAAa;oBACpB,KAAK,EAAE,EAAE;iBACZ;gBACD,GAAG,OAAO;aACb,CAAC;QACN,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC3B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,sBAAsB,IAAI,GAAG;YACtC,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC,KAAK,CAAC;IAC1B,CAAC;CAAA;AAED,SAAe,iBAAiB,CAC5B,MAA2B,EAC3B,IAAY;;QAEZ,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,MAAM,8BAA8B,CACvC,MAA0C,EAC1C,IAAI,CACP,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;gBACvB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,qBAAqB,IAAI,GAAG;gBACrC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACrC,KAAK,EAAE,MAAM,CAAC,IAAI;oBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,KAAK,EAAE,MAAM;iBAChB,CAAC,CAAC;aACN,CAAC,CAAC;YAEH,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;CAAA;AAED,SAAe,8BAA8B,CACzC,MAAwC,EACxC,IAAY;;QAEZ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACvB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,YAAY,MAAM,CAAC,aAAa,QAAQ,IAAI,GAAG;YACxD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACjD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC1B,OAAO;wBACH,KAAK,EAAE,MAAM,CAAC,IAAI;wBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,KAAK,EAAE,MAAM;qBAChB,CAAC;gBACN,CAAC;gBAED,OAAO;oBACH,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,KAAK,EAAE,MAAM;iBAChB,CAAC;YACN,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;CAAA"}
|