@opentdf/ctl 0.20.0-rc.183 → 0.22.0-beta.232
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cli.js +97 -24
- package/dist/src/cli.js.map +1 -0
- package/dist/src/logger.js +3 -2
- package/dist/src/logger.js.map +1 -0
- package/package.json +13 -13
package/dist/src/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import { stat } from 'node:fs/promises';
|
|
|
3
3
|
import { Writable } from 'node:stream';
|
|
4
4
|
import yargs from 'yargs';
|
|
5
5
|
import { hideBin } from 'yargs/helpers';
|
|
6
|
-
import { AuthProviders, version, tdfSpecVersion, OpenTDF, isPublicKeyAlgorithm, } from '@opentdf/sdk';
|
|
6
|
+
import { AuthProviders, version, tdfSpecVersion, OpenTDF, isPublicKeyAlgorithm, PUBLIC_KEY_ALGORITHMS, } from '@opentdf/sdk';
|
|
7
7
|
import { CLIError, log } from './logger.js';
|
|
8
8
|
import * as assertions from '@opentdf/sdk/assertions';
|
|
9
9
|
import { base64 } from '@opentdf/sdk/encodings';
|
|
@@ -14,6 +14,11 @@ class InvalidAuthProvider {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
const containerTypes = ['tdf3', 'ztdf'];
|
|
17
|
+
/** Accepted values for the two integrity-algorithm flags, lowercase by convention. */
|
|
18
|
+
const integrityAlgorithms = ['hs256', 'gmac'];
|
|
19
|
+
/** Flag values are case-insensitive; normalize before yargs checks `choices`. */
|
|
20
|
+
const lowercaseIntegrityAlgorithm = (v) => typeof v === 'string' ? v.toLowerCase() : v;
|
|
21
|
+
const asError = (value) => value instanceof Error ? value : new Error(String(value));
|
|
17
22
|
const parseJwt = (jwt, field = 1) => {
|
|
18
23
|
return JSON.parse(base64.decode(jwt.split('.')[field]));
|
|
19
24
|
};
|
|
@@ -49,8 +54,8 @@ async function processAuth({ auth, clientId, clientSecret, concurrencyLimit, oid
|
|
|
49
54
|
return {
|
|
50
55
|
requestLog,
|
|
51
56
|
updateClientPublicKey: async (signingKey) => {
|
|
52
|
-
actual.updateClientPublicKey(signingKey);
|
|
53
|
-
log('DEBUG', `updateClientPublicKey: [${signingKey
|
|
57
|
+
await actual.updateClientPublicKey(signingKey);
|
|
58
|
+
log('DEBUG', `updateClientPublicKey: [${JSON.stringify(signingKey.publicKey)}]`);
|
|
54
59
|
},
|
|
55
60
|
withCreds: async (httpReq) => {
|
|
56
61
|
const credible = await actual.withCreds(httpReq);
|
|
@@ -83,7 +88,8 @@ async function parseAssertionVerificationKeys(s) {
|
|
|
83
88
|
u = JSON.parse(await jsonFile.text());
|
|
84
89
|
}
|
|
85
90
|
catch (err2) {
|
|
86
|
-
|
|
91
|
+
const cause = asError(err2);
|
|
92
|
+
throw new CLIError('CRITICAL', `Failed to open/parse assertion verification keys as string or file path ${asError(err).message}`, cause);
|
|
87
93
|
}
|
|
88
94
|
}
|
|
89
95
|
if (typeof u !== 'object' || u === null) {
|
|
@@ -108,10 +114,10 @@ async function parseAssertionVerificationKeys(s) {
|
|
|
108
114
|
throw new CLIError('CRITICAL', `Invalid assertion for ${assertionName}: Missing or invalid 'key' or 'alg'`);
|
|
109
115
|
}
|
|
110
116
|
try {
|
|
111
|
-
u.Keys[assertionName].key =
|
|
117
|
+
u.Keys[assertionName].key = correctAssertionKeys(assertionKey);
|
|
112
118
|
}
|
|
113
119
|
catch (err) {
|
|
114
|
-
throw new CLIError('CRITICAL', `Issue converting assertion key from string: ${err.message}`);
|
|
120
|
+
throw new CLIError('CRITICAL', `Issue converting assertion key from string: ${asError(err).message}`);
|
|
115
121
|
}
|
|
116
122
|
}
|
|
117
123
|
return u;
|
|
@@ -138,7 +144,7 @@ async function parseReadOptions(argv) {
|
|
|
138
144
|
}
|
|
139
145
|
return r;
|
|
140
146
|
}
|
|
141
|
-
|
|
147
|
+
function correctAssertionKeys({ alg, key }) {
|
|
142
148
|
if (alg === 'HS256') {
|
|
143
149
|
// Convert key string to Uint8Array
|
|
144
150
|
if (typeof key !== 'string') {
|
|
@@ -168,7 +174,8 @@ async function parseAssertionConfig(s) {
|
|
|
168
174
|
u = JSON.parse(await jsonFile.text());
|
|
169
175
|
}
|
|
170
176
|
catch (err2) {
|
|
171
|
-
|
|
177
|
+
const cause = asError(err2);
|
|
178
|
+
throw new CLIError('CRITICAL', `Failed to open/parse assertions as string or file path ${asError(err).message} [${cause.message}]`, asError(err));
|
|
172
179
|
}
|
|
173
180
|
}
|
|
174
181
|
// if u is null or empty, return an empty array
|
|
@@ -176,21 +183,25 @@ async function parseAssertionConfig(s) {
|
|
|
176
183
|
return [];
|
|
177
184
|
}
|
|
178
185
|
const a = Array.isArray(u) ? u : [u];
|
|
186
|
+
const configs = [];
|
|
179
187
|
for (const assertion of a) {
|
|
180
188
|
if (!assertions.isAssertionConfig(assertion)) {
|
|
181
189
|
throw new CLIError('CRITICAL', `invalid assertion config ${JSON.stringify(assertion)}`);
|
|
182
190
|
}
|
|
183
191
|
if (!assertion.signingKey) {
|
|
192
|
+
configs.push(assertion);
|
|
184
193
|
continue;
|
|
185
194
|
}
|
|
186
195
|
try {
|
|
187
|
-
assertion.signingKey.key =
|
|
196
|
+
assertion.signingKey.key = correctAssertionKeys(assertion.signingKey);
|
|
188
197
|
}
|
|
189
198
|
catch (err) {
|
|
190
|
-
|
|
199
|
+
const cause = asError(err);
|
|
200
|
+
throw new CLIError('CRITICAL', `Issue converting assertion key from string: ${cause.message}`, cause);
|
|
191
201
|
}
|
|
202
|
+
configs.push(assertion);
|
|
192
203
|
}
|
|
193
|
-
return
|
|
204
|
+
return configs;
|
|
194
205
|
}
|
|
195
206
|
async function parseCreateOptions(argv) {
|
|
196
207
|
const c = {
|
|
@@ -202,11 +213,8 @@ async function parseCreateOptions(argv) {
|
|
|
202
213
|
c.autoconfigure = !!argv.autoconfigure;
|
|
203
214
|
return c;
|
|
204
215
|
}
|
|
205
|
-
|
|
206
|
-
const c =
|
|
207
|
-
if (argv.assertions?.length) {
|
|
208
|
-
c.assertionConfigs = await parseAssertionConfig(argv.assertions);
|
|
209
|
-
}
|
|
216
|
+
function parseCreateTDFFlags(argv) {
|
|
217
|
+
const c = {};
|
|
210
218
|
if (argv.encapKeyType?.length) {
|
|
211
219
|
if (!isPublicKeyAlgorithm(argv.encapKeyType)) {
|
|
212
220
|
throw new CLIError('CRITICAL', `Unsupported rewrap key algorithm: [${argv.encapKeyType}]`);
|
|
@@ -224,6 +232,29 @@ async function parseCreateTDFOptions(argv) {
|
|
|
224
232
|
if (argv.tdfSpecVersion) {
|
|
225
233
|
c.tdfSpecVersion = argv.tdfSpecVersion;
|
|
226
234
|
}
|
|
235
|
+
if (argv.rootIntegrityAlgorithm?.length) {
|
|
236
|
+
// Only HMAC is supported for the root integrity algorithm.
|
|
237
|
+
if (argv.rootIntegrityAlgorithm.toLowerCase() !== 'hs256') {
|
|
238
|
+
throw new CLIError('CRITICAL', `unsupported root integrity algorithm: [${argv.rootIntegrityAlgorithm}]; only [hs256] is supported`);
|
|
239
|
+
}
|
|
240
|
+
c.rootIntegrityAlgorithm = 'HS256';
|
|
241
|
+
}
|
|
242
|
+
if (argv.segmentIntegrityAlgorithm?.length) {
|
|
243
|
+
const segmentAlg = argv.segmentIntegrityAlgorithm.toUpperCase();
|
|
244
|
+
if (segmentAlg !== 'GMAC' && segmentAlg !== 'HS256') {
|
|
245
|
+
throw new CLIError('CRITICAL', `unsupported segment integrity algorithm: [${argv.segmentIntegrityAlgorithm}]`);
|
|
246
|
+
}
|
|
247
|
+
c.segmentIntegrityAlgorithm = segmentAlg;
|
|
248
|
+
}
|
|
249
|
+
return c;
|
|
250
|
+
}
|
|
251
|
+
async function parseCreateTDFOptions(argv, flags = parseCreateTDFFlags(argv)) {
|
|
252
|
+
const c = { ...(await parseCreateOptions(argv)), ...flags };
|
|
253
|
+
if (argv.assertions?.length) {
|
|
254
|
+
// Reads from disk (parseAssertionConfig falls back to openAsBlob), so it
|
|
255
|
+
// stays here rather than in the pure pass.
|
|
256
|
+
c.assertionConfigs = await parseAssertionConfig(argv.assertions);
|
|
257
|
+
}
|
|
227
258
|
log('DEBUG', `CreateTDFOptions: ${JSON.stringify(c)}`);
|
|
228
259
|
return c;
|
|
229
260
|
}
|
|
@@ -238,7 +269,7 @@ async function fileAsSource(file) {
|
|
|
238
269
|
}
|
|
239
270
|
}
|
|
240
271
|
catch (e) {
|
|
241
|
-
throw new CLIError('CRITICAL', `File is not accessable [${file}]`, e);
|
|
272
|
+
throw new CLIError('CRITICAL', `File is not accessable [${file}]`, asError(e));
|
|
242
273
|
}
|
|
243
274
|
log('DEBUG', `Using input from file [${file}]`);
|
|
244
275
|
return { type: 'file-browser', location: await openAsBlob(file) };
|
|
@@ -264,7 +295,7 @@ export const handleArgs = (args) => {
|
|
|
264
295
|
process.exit(2);
|
|
265
296
|
}
|
|
266
297
|
else {
|
|
267
|
-
console.error(
|
|
298
|
+
console.error(msg, '\n', yargs.help());
|
|
268
299
|
process.exit(1);
|
|
269
300
|
}
|
|
270
301
|
})
|
|
@@ -390,6 +421,7 @@ export const handleArgs = (args) => {
|
|
|
390
421
|
group: 'Encrypt Options:',
|
|
391
422
|
desc: 'Key type for wrapping keys',
|
|
392
423
|
type: 'string',
|
|
424
|
+
choices: PUBLIC_KEY_ALGORITHMS,
|
|
393
425
|
default: 'rsa:2048',
|
|
394
426
|
},
|
|
395
427
|
mimeType: {
|
|
@@ -398,11 +430,30 @@ export const handleArgs = (args) => {
|
|
|
398
430
|
type: 'string',
|
|
399
431
|
default: '',
|
|
400
432
|
},
|
|
433
|
+
rootIntegrityAlgorithm: {
|
|
434
|
+
alias: 'root-integrity-algorithm',
|
|
435
|
+
group: 'Encrypt Options:',
|
|
436
|
+
desc: 'Algorithm for the root signature. Only hs256 is supported; gmac is rejected',
|
|
437
|
+
type: 'string',
|
|
438
|
+
choices: integrityAlgorithms,
|
|
439
|
+
coerce: lowercaseIntegrityAlgorithm,
|
|
440
|
+
default: 'hs256',
|
|
441
|
+
},
|
|
442
|
+
segmentIntegrityAlgorithm: {
|
|
443
|
+
alias: 'segment-integrity-algorithm',
|
|
444
|
+
group: 'Encrypt Options:',
|
|
445
|
+
desc: 'Algorithm for per-segment integrity',
|
|
446
|
+
type: 'string',
|
|
447
|
+
choices: integrityAlgorithms,
|
|
448
|
+
coerce: lowercaseIntegrityAlgorithm,
|
|
449
|
+
default: 'gmac',
|
|
450
|
+
},
|
|
401
451
|
rewrapKeyType: {
|
|
402
452
|
alias: 'rewrap-encapsulation-algorithm',
|
|
403
453
|
group: 'Decrypt Options:',
|
|
404
454
|
desc: 'Key type for rewrap',
|
|
405
455
|
type: 'string',
|
|
456
|
+
choices: PUBLIC_KEY_ALGORITHMS,
|
|
406
457
|
default: 'rsa:2048',
|
|
407
458
|
},
|
|
408
459
|
userId: {
|
|
@@ -471,7 +522,7 @@ export const handleArgs = (args) => {
|
|
|
471
522
|
}, async (argv) => {
|
|
472
523
|
log('DEBUG', 'Running decrypt command');
|
|
473
524
|
const allowedKases = argv.allowList?.split(',');
|
|
474
|
-
log('DEBUG', `Allowed KASes: ${allowedKases}`);
|
|
525
|
+
log('DEBUG', `Allowed KASes: ${JSON.stringify(allowedKases)}`);
|
|
475
526
|
const ignoreAllowList = !!argv.ignoreAllowList;
|
|
476
527
|
if (!argv.oidcEndpoint) {
|
|
477
528
|
throw new CLIError('CRITICAL', 'oidcEndpoint must be specified');
|
|
@@ -495,7 +546,7 @@ export const handleArgs = (args) => {
|
|
|
495
546
|
});
|
|
496
547
|
try {
|
|
497
548
|
log('SILLY', `Initialized client`);
|
|
498
|
-
log('DEBUG', `About to TDF3 decrypt [${argv.file}]`);
|
|
549
|
+
log('DEBUG', `About to TDF3 decrypt [${String(argv.file)}]`);
|
|
499
550
|
const ct = await client.read(await parseReadOptions(argv));
|
|
500
551
|
const destination = argv.output ? createWriteStream(argv.output) : process.stdout;
|
|
501
552
|
await ct.pipeTo(Writable.toWeb(destination));
|
|
@@ -515,7 +566,13 @@ export const handleArgs = (args) => {
|
|
|
515
566
|
accessToken = parseJwt(lastRequest.headers[h].split(' ')[1]);
|
|
516
567
|
log('INFO', `Access Token: ${JSON.stringify(accessToken)}`);
|
|
517
568
|
if (argv.dpop) {
|
|
518
|
-
|
|
569
|
+
const cnf = typeof accessToken === 'object' &&
|
|
570
|
+
accessToken !== null &&
|
|
571
|
+
'cnf' in accessToken
|
|
572
|
+
? accessToken.cnf
|
|
573
|
+
: undefined;
|
|
574
|
+
const hasJkt = typeof cnf === 'object' && cnf !== null && 'jkt' in cnf && Boolean(cnf.jkt);
|
|
575
|
+
console.assert(hasJkt, 'Access token must have a cnf.jkt');
|
|
519
576
|
}
|
|
520
577
|
break;
|
|
521
578
|
}
|
|
@@ -534,6 +591,16 @@ export const handleArgs = (args) => {
|
|
|
534
591
|
});
|
|
535
592
|
}, async (argv) => {
|
|
536
593
|
log('DEBUG', 'Running encrypt command');
|
|
594
|
+
// Order is deliberate and covered by bin/opentdf.bats:
|
|
595
|
+
// 1. pure flag checks -- no I/O, so a typo fails instantly
|
|
596
|
+
// 2. oidcEndpoint, mirroring `decrypt`
|
|
597
|
+
// 3. open the input file and any assertion files
|
|
598
|
+
// 4. the auth provider, which may reach the IdP
|
|
599
|
+
const createFlags = parseCreateTDFFlags(argv);
|
|
600
|
+
if (!argv.oidcEndpoint) {
|
|
601
|
+
throw new CLIError('CRITICAL', 'oidcEndpoint must be specified');
|
|
602
|
+
}
|
|
603
|
+
const createOptions = await parseCreateTDFOptions(argv, createFlags);
|
|
537
604
|
const authProvider = await processAuth(argv);
|
|
538
605
|
log('DEBUG', `Initialized auth provider ${JSON.stringify(authProvider)}`);
|
|
539
606
|
const guessedPolicyEndpoint = guessPolicyUrl(argv);
|
|
@@ -549,7 +616,7 @@ export const handleArgs = (args) => {
|
|
|
549
616
|
try {
|
|
550
617
|
log('SILLY', `Initialized client`);
|
|
551
618
|
log('DEBUG', `TDF Create`);
|
|
552
|
-
const ct = await client.createTDF(
|
|
619
|
+
const ct = await client.createTDF(createOptions);
|
|
553
620
|
if (!ct) {
|
|
554
621
|
throw new CLIError('CRITICAL', 'Encrypt configuration error: No output?');
|
|
555
622
|
}
|
|
@@ -573,12 +640,18 @@ export const handleArgs = (args) => {
|
|
|
573
640
|
.version('version', JSON.stringify({
|
|
574
641
|
'@opentdf/sdk': version,
|
|
575
642
|
tdfSpecVersion,
|
|
643
|
+
// Features explicitly implemented by this CLI build, as opposed to
|
|
644
|
+
// values merely accepted by an option's `choices` list (e.g.
|
|
645
|
+
// --rewrapKeyType has long accepted "mlkem:768" because it shares
|
|
646
|
+
// PUBLIC_KEY_ALGORITHMS with the KAS-managed-key encap path, which
|
|
647
|
+
// predates the rewrap session key actually decapsulating ML-KEM).
|
|
648
|
+
supportedFeatures: ['session-key-mlkem'],
|
|
576
649
|
}))
|
|
577
650
|
.alias('version', 'V')
|
|
578
651
|
.strict()
|
|
579
652
|
.parseAsync());
|
|
580
653
|
};
|
|
581
|
-
export const main =
|
|
654
|
+
export const main = (argsPromise) => {
|
|
582
655
|
return argsPromise;
|
|
583
656
|
};
|
|
584
657
|
handleArgs(hideBin(process.argv))
|
|
@@ -599,4 +672,4 @@ function guessPolicyUrl({ kasEndpoint, policyEndpoint, }) {
|
|
|
599
672
|
}
|
|
600
673
|
return undefined;
|
|
601
674
|
}
|
|
602
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFPTCxhQUFhLEVBQ2IsT0FBTyxFQUNQLGNBQWMsRUFDZCxPQUFPLEVBRVAsb0JBQW9CLEdBQ3JCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQVMsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxVQUFVLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBZ0JoRCxNQUFNLG1CQUFtQjtJQUN2QixLQUFLLENBQUMscUJBQXFCLEtBQW1CLENBQUM7SUFDL0MsU0FBUztRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUV4QyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUU7SUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQkFBZ0Is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
|
|
675
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/logger.js
CHANGED
|
@@ -6,6 +6,7 @@ export class CLIError extends Error {
|
|
|
6
6
|
this.message = message;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
+
const initialLoggerState = { level: 'INFO' };
|
|
9
10
|
export const log = Object.assign((thing, message) => {
|
|
10
11
|
let e;
|
|
11
12
|
let m;
|
|
@@ -60,5 +61,5 @@ export const log = Object.assign((thing, message) => {
|
|
|
60
61
|
if (l === 'CRITICAL') {
|
|
61
62
|
process.exit(1);
|
|
62
63
|
}
|
|
63
|
-
},
|
|
64
|
-
//# sourceMappingURL=
|
|
64
|
+
}, initialLoggerState);
|
|
65
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,MAAM,GAAY,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAE1F,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEjC,YAAY,MAAa,EAAE,OAAe,EAAE,KAAa;QACvD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAOD,MAAM,kBAAkB,GAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAE/D,MAAM,CAAC,MAAM,GAAG,GAAW,MAAM,CAAC,MAAM,CAAC,CAAC,KAA+B,EAAE,OAAgB,EAAE,EAAE;IAC7F,IAAI,CAAe,CAAC;IACpB,IAAI,CAAS,CAAC;IACd,IAAI,CAAQ,CAAC;IAEb,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACjB,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QAClB,CAAC,GAAG,KAAK,CAAC;IACZ,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,CAAC,GAAG,UAAU,CAAC;QACf,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QAClB,CAAC,GAAG,KAAK,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,KAAK,CAAC;QACV,CAAC,GAAG,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC,GAAG,IAAI,CAAC;IACX,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,EAAE,CAAC;oBAClC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC1B,CAAC;gBACD,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,EAAE,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;gBACD,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,MAAM;YACR;gBACE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtB,MAAM;QACV,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,EAAE,kBAAkB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentdf/ctl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0-beta.232",
|
|
4
4
|
"description": "Node based CLI for opentdf",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,39 +23,39 @@
|
|
|
23
23
|
"watch": "(trap 'kill 0' SIGINT; npm run build && (npm run build:watch & npm run test -- --watch))",
|
|
24
24
|
"format": "prettier --write \"{src,tests}/**/*.ts\"",
|
|
25
25
|
"license-check": "license-checker-rseidelsohn --production --onlyAllow 'Apache-2.0; BSD; CC-BY-4.0; ISC; MIT'",
|
|
26
|
-
"lint": "eslint
|
|
26
|
+
"lint": "eslint \"src/**/*.ts\" \"tests/**/*.ts\""
|
|
27
27
|
},
|
|
28
28
|
"bin": {
|
|
29
29
|
"opentdf": "./bin/opentdf.mjs"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@eslint/
|
|
33
|
-
"@eslint/js": "^9.21.0",
|
|
32
|
+
"@eslint/js": "10.0.1",
|
|
34
33
|
"@esm-bundle/chai": "4.3.4-fix.0",
|
|
35
34
|
"@types/mocha": "10.0.10",
|
|
36
|
-
"@types/node": "
|
|
35
|
+
"@types/node": "24.12.0",
|
|
37
36
|
"@types/readable-stream": "^4.0.18",
|
|
38
37
|
"@types/sinon": "^21.0.0",
|
|
39
38
|
"@types/yargs": "^17.0.33",
|
|
40
39
|
"chai": "^5.2.0",
|
|
41
|
-
"eslint
|
|
42
|
-
"eslint-
|
|
43
|
-
"eslint-plugin-
|
|
44
|
-
"
|
|
40
|
+
"eslint": "10.11.0",
|
|
41
|
+
"eslint-config-prettier": "10.1.8",
|
|
42
|
+
"eslint-plugin-chai-friendly": "1.2.1",
|
|
43
|
+
"eslint-plugin-prettier": "5.5.6",
|
|
44
|
+
"globals": "17.12.0",
|
|
45
45
|
"license-checker-rseidelsohn": "^4.4.2",
|
|
46
46
|
"mocha": "^11.1.0",
|
|
47
|
-
"prettier": "
|
|
47
|
+
"prettier": "3.9.8",
|
|
48
48
|
"sinon": "^21.0.1",
|
|
49
49
|
"ts-node": "^10.9.2",
|
|
50
|
-
"typescript": "
|
|
51
|
-
"typescript-eslint": "
|
|
50
|
+
"typescript": "6.0.3",
|
|
51
|
+
"typescript-eslint": "8.70.1"
|
|
52
52
|
},
|
|
53
53
|
"overrides": {
|
|
54
54
|
"serialize-javascript": "^7.0.4",
|
|
55
55
|
"diff": "^8.0.3"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@opentdf/sdk": "^0.
|
|
58
|
+
"@opentdf/sdk": "^0.22.0-beta.232",
|
|
59
59
|
"yargs": "^18.0.0"
|
|
60
60
|
}
|
|
61
61
|
}
|