@opentdf/ctl 0.20.0 → 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 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?.publicKey}]`);
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
- throw new CLIError('CRITICAL', `Failed to open/parse assertion verification keys as string or file path ${err.message}`, err2);
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 = await correctAssertionKeys(assertionKey);
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
- async function correctAssertionKeys({ alg, key, }) {
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
- throw new CLIError('CRITICAL', `Failed to open/parse assertions as string or file path ${err.message} [${err2}]`, err);
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 = await correctAssertionKeys(assertion.signingKey);
196
+ assertion.signingKey.key = correctAssertionKeys(assertion.signingKey);
188
197
  }
189
198
  catch (err) {
190
- throw new CLIError('CRITICAL', `Issue converting assertion key from string: ${err.message}`, err);
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 a;
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
- async function parseCreateTDFOptions(argv) {
206
- const c = await parseCreateOptions(argv);
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(`${msg}\n\n${yargs.help()}`);
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
- console.assert(accessToken.cnf?.jkt, 'Access token must have a cnf.jkt');
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(await parseCreateTDFOptions(argv));
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 = async (argsPromise) => {
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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"}
@@ -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
- }, { level: 'INFO' });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQVksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRTFGLE1BQU0sT0FBTyxRQUFTLFNBQVEsS0FBSztJQUVqQyxZQUFZLE1BQWEsRUFBRSxPQUFlLEVBQUUsS0FBYTtRQUN2RCxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFPRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxLQUErQixFQUFFLE9BQWdCLEVBQUUsRUFBRTtJQUNwRCxJQUFJLENBQWUsQ0FBQztJQUNwQixJQUFJLENBQVMsQ0FBQztJQUNkLElBQUksQ0FBUSxDQUFDO0lBRWIsSUFBSSxLQUFLLFlBQVksUUFBUSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDakIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDbEIsQ0FBQyxHQUFHLEtBQWMsQ0FBQztJQUNyQixDQUFDO1NBQU0sSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7UUFDbEMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUNmLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2xCLENBQUMsR0FBRyxLQUFjLENBQUM7SUFDckIsQ0FBQztTQUFNLENBQUM7UUFDTixDQUFDLEdBQUcsS0FBYyxDQUFDO1FBQ25CLENBQUMsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2xCLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDWCxDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDL0IsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDVixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekIsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDUjtnQkFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QixNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQyxFQUNELEVBQUUsS0FBSyxFQUFFLE1BQWUsRUFBRSxDQUMzQixDQUFDIn0=
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.20.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 ./{src,tests}/**/*.ts"
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/eslintrc": "^3.3.0",
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": "^24.0.0",
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-config-prettier": "^10.0.2",
42
- "eslint-plugin-chai-friendly": "^1.1.0",
43
- "eslint-plugin-prettier": "^5.5.5",
44
- "globals": "^16.0.0",
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": "^3.5.3",
47
+ "prettier": "3.9.8",
48
48
  "sinon": "^21.0.1",
49
49
  "ts-node": "^10.9.2",
50
- "typescript": "^5.8.2",
51
- "typescript-eslint": "^8.26.0"
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.20.0",
58
+ "@opentdf/sdk": "^0.22.0-beta.232",
59
59
  "yargs": "^18.0.0"
60
60
  }
61
61
  }