putitoutthere 0.1.7 → 0.1.9

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/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AAuGH,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6LlE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AA+GH,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA+MlE"}
package/dist/cli.js CHANGED
@@ -19,7 +19,7 @@ import { init } from './init.js';
19
19
  import { plan } from './plan.js';
20
20
  import { runPreflight } from './preflight-run.js';
21
21
  import { publish } from './publish.js';
22
- import { inspect } from './token.js';
22
+ import { inspect, tokenList } from './token.js';
23
23
  const VERSION = pkg.version;
24
24
  const COMMANDS = ['init', 'plan', 'publish', 'doctor', 'preflight', 'token', 'version'];
25
25
  const REGISTRIES = ['crates', 'npm', 'pypi'];
@@ -39,7 +39,7 @@ function printUsage() {
39
39
  ' publish Execute the plan',
40
40
  ' doctor Validate config + handlers + auth (#23)',
41
41
  ' preflight Run every pre-publish check without side effects (#93)',
42
- ' token Inspect registry tokens (pypi/npm/crates)',
42
+ ' token Inspect or list registry tokens (pypi/npm/crates)',
43
43
  ' version Print CLI version',
44
44
  '',
45
45
  'Options:',
@@ -49,6 +49,8 @@ function printUsage() {
49
49
  ' --json emit machine-readable output (plan only)',
50
50
  ' --force overwrite putitoutthere.toml on init',
51
51
  ' --artifacts doctor: also check artifact completeness',
52
+ ' --deep doctor: also inspect each token\'s publish scope',
53
+ ' --preflight-check publish: refuse on token scope mismatch (pypi/npm)',
52
54
  ' --all preflight: include non-cascaded packages too',
53
55
  ' --cadence <mode> init: immediate (default) or scheduled',
54
56
  ' --token <value> token inspect: token value (else read from env)',
@@ -66,6 +68,8 @@ function parseFlags(argv) {
66
68
  force: false,
67
69
  artifacts: false,
68
70
  all: false,
71
+ deep: false,
72
+ preflightCheck: false,
69
73
  };
70
74
  for (let i = 0; i < argv.length; i++) {
71
75
  const a = argv[i];
@@ -84,6 +88,10 @@ function parseFlags(argv) {
84
88
  out.artifacts = true;
85
89
  else if (a === '--all')
86
90
  out.all = true;
91
+ else if (a === '--deep')
92
+ out.deep = true;
93
+ else if (a === '--preflight-check')
94
+ out.preflightCheck = true;
87
95
  else if (a === '--cadence') {
88
96
  const v = argv[++i];
89
97
  /* v8 ignore next -- invalid cadence is caught by the type system for legit callers */
@@ -153,6 +161,7 @@ export async function run(argv) {
153
161
  /* v8 ignore next -- --config test covered in plan arm; publish shares the same plumbing */
154
162
  ...(flags.config !== undefined ? { configPath: flags.config } : {}),
155
163
  dryRun: flags.dryRun,
164
+ preflightCheck: flags.preflightCheck,
156
165
  });
157
166
  if (flags.json) {
158
167
  process.stdout.write(JSON.stringify(result) + '\n');
@@ -175,6 +184,7 @@ export async function run(argv) {
175
184
  /* v8 ignore next -- --config test covered via plan arm */
176
185
  ...(flags.config !== undefined ? { configPath: flags.config } : {}),
177
186
  checkArtifacts: flags.artifacts,
187
+ deep: flags.deep,
178
188
  });
179
189
  if (flags.json) {
180
190
  process.stdout.write(JSON.stringify(report) + '\n');
@@ -182,7 +192,10 @@ export async function run(argv) {
182
192
  else {
183
193
  for (const p of report.packages) {
184
194
  const badge = p.auth === 'missing' ? '✗' : '✓';
185
- process.stdout.write(` ${badge} ${p.name} (${p.kind}) — auth: ${p.auth}\n`);
195
+ const scopeSuffix = p.scope !== undefined
196
+ ? ` scope: ${p.scope}${p.scope_match && p.scope_match !== 'ok' ? ` [${p.scope_match}]` : ''}`
197
+ : '';
198
+ process.stdout.write(` ${badge} ${p.name} (${p.kind}) — auth: ${p.auth}${scopeSuffix}\n`);
186
199
  }
187
200
  if (report.artifacts && report.artifacts.length > 0) {
188
201
  process.stdout.write('\nArtifacts:\n');
@@ -237,9 +250,23 @@ export async function run(argv) {
237
250
  }
238
251
  case 'token': {
239
252
  const [sub, ...subRest] = rest;
253
+ if (sub === 'list') {
254
+ const subFlags = parseFlags(subRest);
255
+ const rows = tokenList({
256
+ cwd: subFlags.cwd,
257
+ ...(subFlags.config !== undefined ? { configPath: subFlags.config } : {}),
258
+ });
259
+ if (subFlags.json) {
260
+ process.stdout.write(JSON.stringify({ tokens: rows }) + '\n');
261
+ }
262
+ else {
263
+ printTokenList(rows);
264
+ }
265
+ return 0;
266
+ }
240
267
  if (sub !== 'inspect') {
241
268
  process.stderr.write(sub === undefined
242
- ? 'putitoutthere token: missing subcommand (expected "inspect")\n'
269
+ ? 'putitoutthere token: missing subcommand (expected "inspect" or "list")\n'
243
270
  : `putitoutthere token: unknown subcommand: ${sub}\n`);
244
271
  return 1;
245
272
  }
@@ -249,7 +276,7 @@ export async function run(argv) {
249
276
  process.stderr.write('putitoutthere token inspect: no token provided. Pass --token or set a registry env var.\n');
250
277
  return 1;
251
278
  }
252
- const result = inspect({
279
+ const result = await inspect({
253
280
  token: tokenValue,
254
281
  ...(subFlags.registry !== undefined ? { registry: subFlags.registry } : {}),
255
282
  });
@@ -319,6 +346,26 @@ function envTokenFor(registry) {
319
346
  const filtered = matches.filter((m) => m.registry === registry);
320
347
  return filtered[0]?.value;
321
348
  }
349
+ function printTokenList(rows) {
350
+ if (rows.length === 0) {
351
+ process.stdout.write('no registry tokens found in environment\n');
352
+ return;
353
+ }
354
+ const headers = ['REGISTRY', 'SOURCE', 'ENV/NAME', 'DETAILS'];
355
+ const widths = headers.map((h) => h.length);
356
+ for (const r of rows) {
357
+ widths[0] = Math.max(widths[0], r.registry.length);
358
+ widths[1] = Math.max(widths[1], r.source.length);
359
+ widths[2] = Math.max(widths[2], r.name.length);
360
+ widths[3] = Math.max(widths[3], r.details.length);
361
+ }
362
+ const pad = (s, w) => s + ' '.repeat(Math.max(0, w - s.length));
363
+ const line = (cells) => cells.map((c, i) => pad(c, widths[i])).join(' ').trimEnd() + '\n';
364
+ process.stdout.write(line(headers));
365
+ for (const r of rows) {
366
+ process.stdout.write(line([r.registry, r.source, r.name, r.details]));
367
+ }
368
+ }
322
369
  function printInspectHuman(result) {
323
370
  if ('error' in result) {
324
371
  process.stderr.write(`inspect failed (${result.registry}, digest=${result.source_digest}): ${result.error}\n`);
@@ -339,8 +386,35 @@ function printInspectHuman(result) {
339
386
  }
340
387
  lines.push(`expired: ${String(result.expired)}`);
341
388
  }
389
+ else if (result.registry === 'npm') {
390
+ lines.push(`format: ${result.format}`);
391
+ lines.push(`username: ${result.username}`);
392
+ if (result.scope_row) {
393
+ lines.push(`readonly: ${String(result.scope_row.readonly)}`);
394
+ lines.push(`automation: ${String(result.scope_row.automation)}`);
395
+ if (result.scope_row.packages)
396
+ lines.push(`packages: ${result.scope_row.packages.join(', ')}`);
397
+ if (result.scope_row.scopes)
398
+ lines.push(`scopes: ${result.scope_row.scopes.join(', ')}`);
399
+ if (result.scope_row.orgs)
400
+ lines.push(`orgs: ${result.scope_row.orgs.join(', ')}`);
401
+ if (result.scope_row.expires_at)
402
+ lines.push(`expires: ${result.scope_row.expires_at}`);
403
+ }
404
+ else if (result.note) {
405
+ lines.push(`note: ${result.note}`);
406
+ }
407
+ }
342
408
  else {
343
- lines.push(`status: ${result.status}`);
409
+ lines.push(`username: ${result.username}`);
410
+ if (result.account_tokens) {
411
+ lines.push(`account tokens (${result.account_tokens.length}):`);
412
+ for (const t of result.account_tokens) {
413
+ const scopes = t.endpoint_scopes?.join(',') ?? '(unscoped)';
414
+ const crates = t.crate_scopes?.join(',') ?? '(all)';
415
+ lines.push(` - ${t.name}: endpoints=${scopes} crates=${crates}`);
416
+ }
417
+ }
344
418
  lines.push(`note: ${result.note}`);
345
419
  }
346
420
  process.stdout.write(lines.join('\n') + '\n');
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/doctor.d.ts CHANGED
@@ -14,11 +14,20 @@
14
14
  * Issue #23. Plan: §21.1, §16.4.7. Artifact check: #89.
15
15
  */
16
16
  import { type AuthResult } from './preflight.js';
17
+ import { type DeepCheckRow, type InspectFn } from './token-scope.js';
17
18
  export interface DoctorOptions {
18
19
  cwd: string;
19
20
  configPath?: string;
20
21
  /** When true, walks the plan and checks each artifact dir exists. */
21
22
  checkArtifacts?: boolean;
23
+ /**
24
+ * When true, resolve each package's token and run a live `inspect`
25
+ * to cross-check publish scope against the config. Slower (hits the
26
+ * registries); off by default. See #110.
27
+ */
28
+ deep?: boolean;
29
+ /** Override for tests; defaults to the real `inspect`. */
30
+ inspectFn?: InspectFn;
22
31
  }
23
32
  export interface DoctorReport {
24
33
  ok: boolean;
@@ -27,6 +36,9 @@ export interface DoctorReport {
27
36
  name: string;
28
37
  kind: string;
29
38
  auth: AuthResult['via'];
39
+ /** Populated when `deep: true`. */
40
+ scope?: string;
41
+ scope_match?: DeepCheckRow['match'];
30
42
  }>;
31
43
  artifacts?: Array<{
32
44
  package: string;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;KACzB,CAAC,CAAC;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA6CvE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0DAA0D;IAC1D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACxB,mCAAmC;QACnC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;KACrC,CAAC,CAAC;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA2EvE"}
package/dist/doctor.js CHANGED
@@ -19,6 +19,7 @@ import { expectedLayout } from './completeness.js';
19
19
  import { loadConfig } from './config.js';
20
20
  import { plan } from './plan.js';
21
21
  import { checkAuth } from './preflight.js';
22
+ import { deepCheck } from './token-scope.js';
22
23
  export async function doctor(opts) {
23
24
  const issues = [];
24
25
  let config = null;
@@ -44,6 +45,35 @@ export async function doctor(opts) {
44
45
  issues.push(`auth: ${pkg.name} (${pkg.kind}) needs ${row?.acceptedEnvVars.join(' or ') ?? '<env-var>'} or OIDC`);
45
46
  }
46
47
  }
48
+ if (opts.deep) {
49
+ const scopable = config.packages.filter((p) => {
50
+ const r = auth.results.find((x) => x.package === p.name);
51
+ return r !== undefined && r.via === 'token';
52
+ });
53
+ const envVarForPackage = new Map();
54
+ for (const p of scopable) {
55
+ const r = auth.results.find((x) => x.package === p.name);
56
+ /* v8 ignore next -- filter above guarantees a row */
57
+ if (r !== undefined)
58
+ envVarForPackage.set(p.name, r.envVar);
59
+ }
60
+ const rows = await deepCheck({
61
+ packages: scopable,
62
+ envVarForPackage,
63
+ ...(opts.inspectFn !== undefined ? { inspect: opts.inspectFn } : {}),
64
+ });
65
+ for (const row of rows) {
66
+ const pkgEntry = packages.find((p) => p.name === row.package);
67
+ /* v8 ignore next -- deepCheck rows always correspond to a scoped package */
68
+ if (pkgEntry === undefined)
69
+ continue;
70
+ pkgEntry.scope = row.scope;
71
+ pkgEntry.scope_match = row.match;
72
+ if (row.match === 'mismatch' || row.match === 'error') {
73
+ issues.push(`scope: ${row.package} (${row.kind}) — ${row.detail ?? 'token scope does not match config'}`);
74
+ }
75
+ }
76
+ }
47
77
  }
48
78
  const artifacts = opts.checkArtifacts && config
49
79
  ? await checkArtifacts(opts, cfgPath, issues)
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
package/dist/publish.d.ts CHANGED
@@ -15,13 +15,23 @@
15
15
  *
16
16
  * Issue #22.
17
17
  */
18
+ import { type InspectFn } from './token-scope.js';
18
19
  import type { Handler, PublishResult } from './types.js';
19
20
  export interface PublishOptions {
20
21
  cwd: string;
21
22
  configPath?: string;
22
23
  dryRun?: boolean;
24
+ /**
25
+ * Opt-in deep auth check. When true, resolves each target's token
26
+ * and calls `inspect` before any publish; refuses to proceed on a
27
+ * scope mismatch for pypi/npm. crates.io mismatches are non-blocking
28
+ * (the bearer row isn't identifiable — see #110). Off by default.
29
+ */
30
+ preflightCheck?: boolean;
23
31
  /** Override for tests. */
24
32
  handlerFor?: (kind: Handler['kind']) => Handler;
33
+ /** Override for tests; defaults to the real `inspect`. */
34
+ inspectFn?: InspectFn;
25
35
  }
26
36
  export interface PublishOutput {
27
37
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAYH,OAAO,KAAK,EAAO,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9D,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;CACjD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAoI1E"}
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAYH,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAO,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9D,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;IAChD,0DAA0D;IAC1D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAwK1E"}
package/dist/publish.js CHANGED
@@ -22,8 +22,9 @@ import { createTag, headCommit, pushTag } from './git.js';
22
22
  import { handlerFor as defaultHandlerFor } from './handlers/index.js';
23
23
  import { createLogger } from './log.js';
24
24
  import { plan } from './plan.js';
25
- import { requireAuth } from './preflight.js';
25
+ import { checkAuth, requireAuth } from './preflight.js';
26
26
  import { createGitHubRelease, generateReleaseNotes } from './release.js';
27
+ import { deepCheck } from './token-scope.js';
27
28
  import { dumpFailure } from './verbose.js';
28
29
  export async function publish(opts) {
29
30
  const cwd = opts.cwd;
@@ -52,7 +53,39 @@ export async function publish(opts) {
52
53
  // per package (one per target) share a single version.
53
54
  const perPackage = groupByPackage(matrix, config.packages);
54
55
  // 2. Pre-flight auth.
55
- requireAuth([...perPackage.keys()].map((name) => mustGet(config.packages, name)));
56
+ const selectedPackages = [...perPackage.keys()].map((name) => mustGet(config.packages, name));
57
+ requireAuth(selectedPackages);
58
+ // 2b. Opt-in deep scope check. Runs after plain auth (we need a token
59
+ // resolved before we can inspect it). Blocking for pypi/npm scope
60
+ // mismatches; crates is warn-only because its bearer row isn't
61
+ // identifiable from /me/tokens.
62
+ if (opts.preflightCheck) {
63
+ const auth = checkAuth(selectedPackages);
64
+ const envVarForPackage = new Map();
65
+ for (const r of auth.results) {
66
+ if (r.via === 'token')
67
+ envVarForPackage.set(r.package, r.envVar);
68
+ }
69
+ const scopable = selectedPackages.filter((p) => envVarForPackage.has(p.name));
70
+ const rows = await deepCheck({
71
+ packages: scopable,
72
+ envVarForPackage,
73
+ ...(opts.inspectFn !== undefined ? { inspect: opts.inspectFn } : {}),
74
+ });
75
+ const blockers = [];
76
+ for (const row of rows) {
77
+ if (row.kind === 'crates' && row.match !== 'ok') {
78
+ log.warn(`publish: preflight: crates scope unverifiable for ${row.package}: ${row.scope}`);
79
+ continue;
80
+ }
81
+ if (row.match === 'mismatch' || row.match === 'error') {
82
+ blockers.push(` - ${row.package} (${row.kind}): ${row.detail ?? row.scope}`);
83
+ }
84
+ }
85
+ if (blockers.length > 0) {
86
+ throw new Error(['publish: preflight-check refused; token scope does not match config:', ...blockers].join('\n'));
87
+ }
88
+ }
56
89
  // 3. Artifact completeness, unless dry-run (no artifacts to check).
57
90
  if (!opts.dryRun) {
58
91
  const completeness = checkCompleteness(matrix, artifactsRoot(cwd));
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Token scope checking — compares what a token is allowed to publish
3
+ * against what `putitoutthere.toml` says the package is.
4
+ *
5
+ * Runs as a deep extension of `doctor` (#110) and as an opt-in gate in
6
+ * `publish --preflight-check`. Per registry:
7
+ *
8
+ * - PyPI: project-name macaroon caveats. Full-scope tokens pass; any
9
+ * restriction list that excludes the package name is a hard
10
+ * mismatch.
11
+ * - npm: granular `pkg:<name>` scopes on the matched tokens row. A
12
+ * bare `@scope` grant still counts when the package name lives
13
+ * under that scope. Legacy (non-granular) tokens are treated as
14
+ * full-scope (`match: 'ok'`, note surfaced).
15
+ * - crates.io: the bearer row is not identifiable, so we can never
16
+ * prove mismatch. Always `match: 'unknown'` — callers that need a
17
+ * block/warn decision should treat `unknown` as warn-only.
18
+ *
19
+ * Never logs or returns token values. Digests are threaded through from
20
+ * `inspect` for traceability.
21
+ */
22
+ import type { InspectOptions, InspectResult } from './token.js';
23
+ import type { Package } from './config.js';
24
+ import type { Kind } from './types.js';
25
+ export type ScopeMatch = 'ok' | 'mismatch' | 'unknown' | 'error';
26
+ export interface DeepCheckRow {
27
+ package: string;
28
+ kind: Kind;
29
+ scope: string;
30
+ match: ScopeMatch;
31
+ /** Populated on mismatch or error; omitted when `ok` / `unknown`. */
32
+ detail?: string;
33
+ }
34
+ export type InspectFn = (opts: InspectOptions) => Promise<InspectResult>;
35
+ /**
36
+ * Registry-facing publish name. Handlers use the override field when
37
+ * present; we mirror that so the scope check talks about the same name
38
+ * the upload will use.
39
+ */
40
+ export declare function publishNameFor(pkg: Package): string;
41
+ export interface ScopeFromResult {
42
+ scope: string;
43
+ match: ScopeMatch;
44
+ detail?: string;
45
+ }
46
+ /**
47
+ * Translate an `InspectResult` + the package it's meant to publish into
48
+ * a scope display + match verdict. Pure; never hits the network.
49
+ */
50
+ export declare function scopeFromInspect(result: InspectResult, pkg: Package): ScopeFromResult;
51
+ export interface DeepCheckOptions {
52
+ packages: readonly Package[];
53
+ /** envVar-per-package mapping, as computed by preflight.checkAuth. */
54
+ envVarForPackage: Map<string, string>;
55
+ env?: NodeJS.ProcessEnv;
56
+ /** Override for tests; defaults to the real `inspect`. */
57
+ inspect?: InspectFn;
58
+ }
59
+ /**
60
+ * Call `inspect` for every package that has a resolvable token in the
61
+ * env, and return one `DeepCheckRow` per package. Packages whose env
62
+ * var is absent or empty are emitted with `match: 'error'`.
63
+ */
64
+ export declare function deepCheck(opts: DeepCheckOptions): Promise<DeepCheckRow[]>;
65
+ //# sourceMappingURL=token-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-scope.d.ts","sourceRoot":"","sources":["../src/token-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAGd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAInD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,eAAe,CASrF;AAyFD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,sEAAsE;IACtE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA6B/E"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Token scope checking — compares what a token is allowed to publish
3
+ * against what `putitoutthere.toml` says the package is.
4
+ *
5
+ * Runs as a deep extension of `doctor` (#110) and as an opt-in gate in
6
+ * `publish --preflight-check`. Per registry:
7
+ *
8
+ * - PyPI: project-name macaroon caveats. Full-scope tokens pass; any
9
+ * restriction list that excludes the package name is a hard
10
+ * mismatch.
11
+ * - npm: granular `pkg:<name>` scopes on the matched tokens row. A
12
+ * bare `@scope` grant still counts when the package name lives
13
+ * under that scope. Legacy (non-granular) tokens are treated as
14
+ * full-scope (`match: 'ok'`, note surfaced).
15
+ * - crates.io: the bearer row is not identifiable, so we can never
16
+ * prove mismatch. Always `match: 'unknown'` — callers that need a
17
+ * block/warn decision should treat `unknown` as warn-only.
18
+ *
19
+ * Never logs or returns token values. Digests are threaded through from
20
+ * `inspect` for traceability.
21
+ */
22
+ import { inspect as realInspect, isError } from './token.js';
23
+ /**
24
+ * Registry-facing publish name. Handlers use the override field when
25
+ * present; we mirror that so the scope check talks about the same name
26
+ * the upload will use.
27
+ */
28
+ export function publishNameFor(pkg) {
29
+ if (pkg.kind === 'pypi')
30
+ return pkg.pypi ?? pkg.name;
31
+ if (pkg.kind === 'npm')
32
+ return pkg.npm ?? pkg.name;
33
+ return pkg.crate ?? pkg.name;
34
+ }
35
+ /**
36
+ * Translate an `InspectResult` + the package it's meant to publish into
37
+ * a scope display + match verdict. Pure; never hits the network.
38
+ */
39
+ export function scopeFromInspect(result, pkg) {
40
+ if (isError(result)) {
41
+ return { scope: '(inspect failed)', match: 'error', detail: result.error };
42
+ }
43
+ if (result.registry === 'pypi')
44
+ return scopeFromPypi(result, pkg);
45
+ if (result.registry === 'npm')
46
+ return scopeFromNpm(result, pkg);
47
+ // crates.io: we can't prove mismatch.
48
+ return { scope: 'unknown (see account tokens)', match: 'unknown' };
49
+ }
50
+ function scopeFromPypi(result, pkg) {
51
+ const allowed = collectPypiProjectNames(result);
52
+ if (allowed === null) {
53
+ return { scope: '(full-scope)', match: 'ok' };
54
+ }
55
+ const want = publishNameFor(pkg);
56
+ if (allowed.includes(want)) {
57
+ return { scope: `projects=[${allowed.join(', ')}]`, match: 'ok' };
58
+ }
59
+ return {
60
+ scope: `projects=[${allowed.join(', ')}]`,
61
+ match: 'mismatch',
62
+ detail: `PyPI token restricted to [${allowed.join(', ')}] but config publishes '${want}'`,
63
+ };
64
+ }
65
+ function collectPypiProjectNames(result) {
66
+ const names = [];
67
+ let sawProjectRestriction = false;
68
+ for (const r of result.restrictions) {
69
+ if (r.type === 'ProjectNames') {
70
+ sawProjectRestriction = true;
71
+ for (const n of r.names)
72
+ names.push(n);
73
+ }
74
+ }
75
+ return sawProjectRestriction ? dedupe(names) : null;
76
+ }
77
+ function scopeFromNpm(result, pkg) {
78
+ const want = publishNameFor(pkg);
79
+ const row = result.scope_row;
80
+ if (row === null) {
81
+ // Legacy UUID or non-granular token: we can't introspect scope.
82
+ // Treat as full-scope ok; doctor will still flag via note.
83
+ return { scope: `(${result.format}; no scope row)`, match: 'ok' };
84
+ }
85
+ const allowedPkgs = row.packages ?? [];
86
+ const allowedScopes = (row.scopes ?? []).map((s) => (s.startsWith('@') ? s : `@${s}`));
87
+ const allowedOrgs = row.orgs ?? [];
88
+ const noRestrictions = allowedPkgs.length === 0 && allowedScopes.length === 0 && allowedOrgs.length === 0;
89
+ if (noRestrictions) {
90
+ return { scope: '(account-wide)', match: 'ok' };
91
+ }
92
+ if (allowedPkgs.includes(want)) {
93
+ return { scope: renderNpmScope(row), match: 'ok' };
94
+ }
95
+ const atScope = scopeOf(want);
96
+ if (atScope !== null && allowedScopes.includes(atScope)) {
97
+ return { scope: renderNpmScope(row), match: 'ok' };
98
+ }
99
+ // Orgs aren't a pre-publish allowlist at the name level (npm doesn't
100
+ // bind "org:foo" to a package name directly), so we don't use them to
101
+ // prove a match. We still render them for visibility.
102
+ return {
103
+ scope: renderNpmScope(row),
104
+ match: 'mismatch',
105
+ detail: `npm token allowlist [${[...allowedPkgs, ...allowedScopes].join(', ')}] does not include '${want}'`,
106
+ };
107
+ }
108
+ function renderNpmScope(row) {
109
+ const parts = [];
110
+ if (row.packages && row.packages.length > 0)
111
+ parts.push(`pkgs=[${row.packages.join(', ')}]`);
112
+ if (row.scopes && row.scopes.length > 0)
113
+ parts.push(`scopes=[${row.scopes.join(', ')}]`);
114
+ if (row.orgs && row.orgs.length > 0)
115
+ parts.push(`orgs=[${row.orgs.join(', ')}]`);
116
+ /* v8 ignore next -- caller only invokes this when at least one list is populated */
117
+ return parts.length === 0 ? '(empty)' : parts.join(' ');
118
+ }
119
+ function scopeOf(name) {
120
+ if (!name.startsWith('@'))
121
+ return null;
122
+ const slash = name.indexOf('/');
123
+ /* v8 ignore next -- scoped npm names always carry a slash separator */
124
+ return slash === -1 ? null : name.slice(0, slash);
125
+ }
126
+ function dedupe(arr) {
127
+ return Array.from(new Set(arr));
128
+ }
129
+ /**
130
+ * Call `inspect` for every package that has a resolvable token in the
131
+ * env, and return one `DeepCheckRow` per package. Packages whose env
132
+ * var is absent or empty are emitted with `match: 'error'`.
133
+ */
134
+ export async function deepCheck(opts) {
135
+ const env = opts.env ?? process.env;
136
+ const inspectFn = opts.inspect ?? realInspect;
137
+ const rows = [];
138
+ for (const pkg of opts.packages) {
139
+ const envVar = opts.envVarForPackage.get(pkg.name);
140
+ const tokenValue = envVar !== undefined ? env[envVar] : undefined;
141
+ if (tokenValue === undefined || tokenValue.trim() === '') {
142
+ rows.push({
143
+ package: pkg.name,
144
+ kind: pkg.kind,
145
+ scope: '(no token resolved)',
146
+ match: 'error',
147
+ detail: `no token value found in ${envVar ?? '<unknown env var>'}`,
148
+ });
149
+ continue;
150
+ }
151
+ const result = await inspectFn({ token: tokenValue, registry: pkg.kind });
152
+ const verdict = scopeFromInspect(result, pkg);
153
+ rows.push({
154
+ package: pkg.name,
155
+ kind: pkg.kind,
156
+ scope: verdict.scope,
157
+ match: verdict.match,
158
+ ...(verdict.detail !== undefined ? { detail: verdict.detail } : {}),
159
+ });
160
+ }
161
+ return rows;
162
+ }
163
+ //# sourceMappingURL=token-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-scope.js","sourceRoot":"","sources":["../src/token-scope.ts"],"names":[],"mappings":"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"}
package/dist/token.d.ts CHANGED
@@ -1,22 +1,27 @@
1
1
  /**
2
2
  * `putitoutthere token inspect` — decode/introspect registry tokens.
3
3
  *
4
- * Issue #107 (scaffold + PyPI). npm and crates.io live probes land in
5
- * #108 and #109 respectively; their handlers return a `pending`
6
- * placeholder until then.
4
+ * Scaffolding and PyPI offline decode: #107.
5
+ * npm live probe: #108 (whoami + SHA-512 match against /-/npm/v1/tokens).
6
+ * crates.io live probe: #109 (/api/v1/me + /api/v1/me/tokens).
7
7
  *
8
8
  * Dispatch is driven by token format, not by a hardcoded registry list:
9
9
  * - `pypi-` prefix → PyPI macaroon decode (offline, full scope)
10
- * - `npm_` prefix → npm (#108)
11
- * - otherwise → crates.io (#109), unless `--registry` overrides
10
+ * - `npm_` prefix → npm (live probe)
11
+ * - otherwise → crates.io (live probe), unless `--registry` overrides
12
12
  *
13
13
  * Token values are never logged. Logs identify a token by the first 8
14
- * hex chars of its SHA-256.
14
+ * hex chars of its SHA-256. Live probes are timeboxed at 5s per request.
15
15
  */
16
+ import { type Package } from './config.js';
16
17
  export type Registry = 'pypi' | 'npm' | 'crates';
17
18
  export interface InspectOptions {
18
19
  token: string;
19
20
  registry?: Registry;
21
+ /** Override live-probe base URL. Tests only. */
22
+ baseUrl?: string;
23
+ /** Override live-probe timeout in ms (default 5000). Tests only. */
24
+ timeoutMs?: number;
20
25
  }
21
26
  export type InspectResult = PypiInspectResult | NpmInspectResult | CratesInspectResult | InspectErrorResult;
22
27
  interface BaseResult {
@@ -44,15 +49,34 @@ export type Restriction = {
44
49
  type: 'Unknown';
45
50
  raw: Record<string, unknown>;
46
51
  };
52
+ export interface NpmScopeRow {
53
+ readonly: boolean;
54
+ automation: boolean;
55
+ packages: string[] | null;
56
+ scopes: string[] | null;
57
+ orgs: string[] | null;
58
+ expires_at: string | null;
59
+ cidr_whitelist: string[] | null;
60
+ created: string | null;
61
+ }
47
62
  export interface NpmInspectResult extends BaseResult {
48
63
  registry: 'npm';
49
64
  format: 'granular' | 'legacy' | 'unknown';
50
- status: 'pending';
51
- note: string;
65
+ username: string;
66
+ scope_row: NpmScopeRow | null;
67
+ note?: string;
68
+ }
69
+ export interface CratesTokenRow {
70
+ name: string;
71
+ endpoint_scopes: string[] | null;
72
+ crate_scopes: string[] | null;
73
+ expired_at: string | null;
52
74
  }
53
75
  export interface CratesInspectResult extends BaseResult {
54
76
  registry: 'crates';
55
- status: 'pending';
77
+ username: string;
78
+ account_tokens: CratesTokenRow[] | null;
79
+ bearer_row: null;
56
80
  note: string;
57
81
  }
58
82
  export interface InspectErrorResult {
@@ -61,7 +85,40 @@ export interface InspectErrorResult {
61
85
  error: string;
62
86
  }
63
87
  export declare function isError(r: InspectResult): r is InspectErrorResult;
64
- export declare function inspect(opts: InspectOptions): InspectResult;
88
+ export declare function inspect(opts: InspectOptions): Promise<InspectResult>;
65
89
  export declare function detectRegistry(token: string): Registry;
90
+ export interface TokenListRow {
91
+ registry: Registry;
92
+ source: 'env';
93
+ name: string;
94
+ details: string;
95
+ }
96
+ export interface TokenListOptions {
97
+ /** Working dir used to locate putitoutthere.toml when no `packages` is passed. */
98
+ cwd?: string;
99
+ configPath?: string;
100
+ /** Env to scan. Defaults to process.env. */
101
+ env?: NodeJS.ProcessEnv;
102
+ /**
103
+ * Override the packages list (skips config load). Tests pass this
104
+ * directly; the CLI path loads it from disk.
105
+ */
106
+ packages?: readonly Package[];
107
+ }
108
+ /**
109
+ * Enumerate registry tokens discoverable to the CLI from the environment.
110
+ *
111
+ * Classification is by *value format*:
112
+ * - `pypi-` prefix → PyPI macaroon
113
+ * - `npm_` prefix → npm granular
114
+ * - opaque value under a crates-recognized env var, iff the config has a
115
+ * crates package → crates.io
116
+ *
117
+ * Token values are never returned or logged.
118
+ *
119
+ * Issue #106. Ships env-only; `--secrets` (repo/env/org secret listing via
120
+ * the stored GitHub user access token) is gated on #105.
121
+ */
122
+ export declare function tokenList(opts?: TokenListOptions): TokenListRow[];
66
123
  export {};
67
124
  //# sourceMappingURL=token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,UAAU,UAAU;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,IAAI,kBAAkB,CAEjE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAQ3D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAItD"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}
package/dist/token.js CHANGED
@@ -1,31 +1,35 @@
1
1
  /**
2
2
  * `putitoutthere token inspect` — decode/introspect registry tokens.
3
3
  *
4
- * Issue #107 (scaffold + PyPI). npm and crates.io live probes land in
5
- * #108 and #109 respectively; their handlers return a `pending`
6
- * placeholder until then.
4
+ * Scaffolding and PyPI offline decode: #107.
5
+ * npm live probe: #108 (whoami + SHA-512 match against /-/npm/v1/tokens).
6
+ * crates.io live probe: #109 (/api/v1/me + /api/v1/me/tokens).
7
7
  *
8
8
  * Dispatch is driven by token format, not by a hardcoded registry list:
9
9
  * - `pypi-` prefix → PyPI macaroon decode (offline, full scope)
10
- * - `npm_` prefix → npm (#108)
11
- * - otherwise → crates.io (#109), unless `--registry` overrides
10
+ * - `npm_` prefix → npm (live probe)
11
+ * - otherwise → crates.io (live probe), unless `--registry` overrides
12
12
  *
13
13
  * Token values are never logged. Logs identify a token by the first 8
14
- * hex chars of its SHA-256.
14
+ * hex chars of its SHA-256. Live probes are timeboxed at 5s per request.
15
15
  */
16
16
  import { createHash } from 'node:crypto';
17
+ import { loadConfig } from './config.js';
17
18
  export function isError(r) {
18
19
  return 'error' in r;
19
20
  }
20
- export function inspect(opts) {
21
+ export async function inspect(opts) {
21
22
  const token = opts.token;
22
23
  const digest = sha256Prefix(token);
23
24
  const registry = opts.registry ?? detectRegistry(token);
25
+ const timeoutMs = opts.timeoutMs ?? 5000;
24
26
  if (registry === 'pypi')
25
27
  return inspectPypi(token, digest);
28
+ /* v8 ignore next -- default baseUrl for production; tests always inject a mock URL */
29
+ const baseUrl = opts.baseUrl ?? (registry === 'npm' ? NPM_REGISTRY : CRATES_REGISTRY);
26
30
  if (registry === 'npm')
27
- return inspectNpmPlaceholder(token, digest);
28
- return inspectCratesPlaceholder(digest);
31
+ return inspectNpm(token, digest, baseUrl, timeoutMs);
32
+ return inspectCrates(token, digest, baseUrl, timeoutMs);
29
33
  }
30
34
  export function detectRegistry(token) {
31
35
  if (token.startsWith('pypi-'))
@@ -37,6 +41,9 @@ export function detectRegistry(token) {
37
41
  function sha256Prefix(token) {
38
42
  return createHash('sha256').update(token).digest('hex').slice(0, 8);
39
43
  }
44
+ function sha512Hex(s) {
45
+ return createHash('sha512').update(s).digest('hex');
46
+ }
40
47
  // ---- PyPI --------------------------------------------------------------
41
48
  const PYPI_PREFIX = 'pypi-';
42
49
  function inspectPypi(token, digest) {
@@ -206,24 +213,289 @@ function hasExpired(restrictions) {
206
213
  }
207
214
  return false;
208
215
  }
209
- // ---- npm (placeholder; #108) ------------------------------------------
210
- function inspectNpmPlaceholder(token, digest) {
211
- const format = token.startsWith('npm_') ? 'granular' : 'unknown';
216
+ async function probe(url, headers, timeoutMs) {
217
+ try {
218
+ const res = await fetch(url, {
219
+ method: 'GET',
220
+ headers: { 'user-agent': 'putitoutthere/0.0.1', ...headers },
221
+ signal: AbortSignal.timeout(timeoutMs),
222
+ });
223
+ let body = null;
224
+ /* v8 ignore next 5 -- registries always return JSON on the endpoints we hit */
225
+ try {
226
+ body = await res.json();
227
+ }
228
+ catch {
229
+ body = null;
230
+ }
231
+ return { status: res.status, body };
232
+ }
233
+ catch {
234
+ // Timeout, aborted fetch, and network errors all collapse to the same outcome:
235
+ // the caller treats the probe as a timeout and reports it to the user.
236
+ return { timeout: true };
237
+ }
238
+ }
239
+ // ---- npm --------------------------------------------------------------
240
+ const NPM_REGISTRY = 'https://registry.npmjs.org';
241
+ async function inspectNpm(token, digest, baseUrl, timeoutMs) {
242
+ const authHeader = { authorization: `Bearer ${token}` };
243
+ const format = token.startsWith('npm_')
244
+ ? 'granular'
245
+ : 'legacy';
246
+ const whoami = await probe(`${baseUrl}/-/whoami`, authHeader, timeoutMs);
247
+ if ('timeout' in whoami) {
248
+ return { registry: 'npm', source_digest: digest, error: 'timeout' };
249
+ }
250
+ if (whoami.status === 401 || whoami.status === 403) {
251
+ return {
252
+ registry: 'npm',
253
+ source_digest: digest,
254
+ error: 'token invalid or expired',
255
+ };
256
+ }
257
+ /* v8 ignore next 7 -- unexpected non-200 from /-/whoami; real responses hit 200/401/403 */
258
+ if (whoami.status !== 200 || !isPlainObject(whoami.body) || typeof whoami.body.username !== 'string') {
259
+ return {
260
+ registry: 'npm',
261
+ source_digest: digest,
262
+ error: `unexpected whoami response (status ${whoami.status})`,
263
+ };
264
+ }
265
+ const username = whoami.body.username;
266
+ const tokens = await probe(`${baseUrl}/-/npm/v1/tokens`, authHeader, timeoutMs);
267
+ if ('timeout' in tokens) {
268
+ return {
269
+ registry: 'npm',
270
+ source_digest: digest,
271
+ error: 'timeout',
272
+ };
273
+ }
274
+ if (tokens.status === 401 || tokens.status === 403) {
275
+ return {
276
+ registry: 'npm',
277
+ source_digest: digest,
278
+ format,
279
+ username,
280
+ scope_row: null,
281
+ note: `tokens endpoint returned ${tokens.status}; only username is confirmed`,
282
+ };
283
+ }
284
+ /* v8 ignore next 10 -- unexpected non-200 from tokens endpoint; 200/401/403 cover real cases */
285
+ if (tokens.status !== 200) {
286
+ return {
287
+ registry: 'npm',
288
+ source_digest: digest,
289
+ format,
290
+ username,
291
+ scope_row: null,
292
+ note: `tokens endpoint returned ${tokens.status}; only username is confirmed`,
293
+ };
294
+ }
295
+ const rows = extractNpmTokenRows(tokens.body);
296
+ const want = sha512Hex(token);
297
+ const match = rows.find((r) => typeof r.key === 'string' && r.key === want);
298
+ if (!match) {
299
+ return {
300
+ registry: 'npm',
301
+ source_digest: digest,
302
+ format,
303
+ username,
304
+ scope_row: null,
305
+ note: 'no SHA-512 match in tokens list (legacy UUID token, or bearer not listable)',
306
+ };
307
+ }
212
308
  return {
213
309
  registry: 'npm',
214
310
  source_digest: digest,
215
311
  format,
216
- status: 'pending',
217
- note: 'npm live probe not yet implemented (see #108)',
312
+ username,
313
+ scope_row: normalizeNpmRow(match),
314
+ };
315
+ }
316
+ function extractNpmTokenRows(body) {
317
+ if (Array.isArray(body))
318
+ return body.filter(isPlainObject);
319
+ if (isPlainObject(body) && Array.isArray(body.objects)) {
320
+ return body.objects.filter(isPlainObject);
321
+ }
322
+ return [];
323
+ }
324
+ function normalizeNpmRow(row) {
325
+ const scopes = Array.isArray(row.scopes)
326
+ ? row.scopes.filter((s) => typeof s === 'string')
327
+ : null;
328
+ const packages = [];
329
+ const orgs = [];
330
+ const atScopes = [];
331
+ if (scopes) {
332
+ for (const s of scopes) {
333
+ if (s.startsWith('pkg:'))
334
+ packages.push(s.slice(4));
335
+ else if (s.startsWith('org:'))
336
+ orgs.push(s.slice(4));
337
+ else if (s.startsWith('@'))
338
+ atScopes.push(s);
339
+ }
340
+ }
341
+ return {
342
+ readonly: row.readonly === true,
343
+ automation: row.automation === true,
344
+ packages: packages.length > 0 ? packages : null,
345
+ scopes: atScopes.length > 0 ? atScopes : null,
346
+ orgs: orgs.length > 0 ? orgs : null,
347
+ expires_at: typeof row.expires === 'string' ? row.expires : null,
348
+ cidr_whitelist: Array.isArray(row.cidr_whitelist)
349
+ ? row.cidr_whitelist.filter((c) => typeof c === 'string')
350
+ : null,
351
+ created: typeof row.created === 'string' ? row.created : null,
218
352
  };
219
353
  }
220
- // ---- crates.io (placeholder; #109) ------------------------------------
221
- function inspectCratesPlaceholder(digest) {
354
+ // ---- crates.io --------------------------------------------------------
355
+ const CRATES_REGISTRY = 'https://crates.io';
356
+ async function inspectCrates(token, digest, baseUrl, timeoutMs) {
357
+ // crates.io takes the raw token as the Authorization header — no Bearer prefix.
358
+ const authHeader = { authorization: token };
359
+ const me = await probe(`${baseUrl}/api/v1/me`, authHeader, timeoutMs);
360
+ if ('timeout' in me) {
361
+ return { registry: 'crates', source_digest: digest, error: 'timeout' };
362
+ }
363
+ if (me.status === 401 || me.status === 403) {
364
+ return {
365
+ registry: 'crates',
366
+ source_digest: digest,
367
+ error: 'token invalid or expired',
368
+ };
369
+ }
370
+ /* v8 ignore next 7 -- unexpected non-200 from /me; 200/401/403 cover real cases */
371
+ if (me.status !== 200 || !isPlainObject(me.body)) {
372
+ return {
373
+ registry: 'crates',
374
+ source_digest: digest,
375
+ error: `unexpected /me response (status ${me.status})`,
376
+ };
377
+ }
378
+ const username = extractCratesUsername(me.body);
379
+ /* v8 ignore next 7 -- /me schema always includes user.login */
380
+ if (username === null) {
381
+ return {
382
+ registry: 'crates',
383
+ source_digest: digest,
384
+ error: 'could not find username in /me response',
385
+ };
386
+ }
387
+ const tokensRes = await probe(`${baseUrl}/api/v1/me/tokens`, authHeader, timeoutMs);
388
+ if ('timeout' in tokensRes) {
389
+ return { registry: 'crates', source_digest: digest, error: 'timeout' };
390
+ }
391
+ if (tokensRes.status === 401 || tokensRes.status === 403) {
392
+ return {
393
+ registry: 'crates',
394
+ source_digest: digest,
395
+ username,
396
+ account_tokens: null,
397
+ bearer_row: null,
398
+ note: `tokens endpoint returned ${tokensRes.status}; only username is confirmed`,
399
+ };
400
+ }
401
+ /* v8 ignore next 11 -- unexpected non-200 from tokens endpoint; 200/401/403 cover real cases */
402
+ if (tokensRes.status !== 200 || !isPlainObject(tokensRes.body)) {
403
+ return {
404
+ registry: 'crates',
405
+ source_digest: digest,
406
+ username,
407
+ account_tokens: null,
408
+ bearer_row: null,
409
+ note: `tokens endpoint returned ${tokensRes.status}; only username is confirmed`,
410
+ };
411
+ }
412
+ const raw = Array.isArray(tokensRes.body.api_tokens) ? tokensRes.body.api_tokens : [];
413
+ const account_tokens = raw.filter(isPlainObject).map(normalizeCratesRow);
222
414
  return {
223
415
  registry: 'crates',
224
416
  source_digest: digest,
225
- status: 'pending',
226
- note: 'crates.io live probe not yet implemented (see #109)',
417
+ username,
418
+ account_tokens,
419
+ bearer_row: null,
420
+ note: 'crates.io does not expose which row corresponds to the bearer.',
227
421
  };
228
422
  }
423
+ function extractCratesUsername(body) {
424
+ if (isPlainObject(body.user) && typeof body.user.login === 'string') {
425
+ return body.user.login;
426
+ }
427
+ /* v8 ignore next 3 -- alternate shape guard; /me always returns {user:{login}} */
428
+ if (typeof body.login === 'string')
429
+ return body.login;
430
+ return null;
431
+ }
432
+ function normalizeCratesRow(row) {
433
+ return {
434
+ name: typeof row.name === 'string' ? row.name : '(unnamed)',
435
+ endpoint_scopes: Array.isArray(row.endpoint_scopes)
436
+ ? row.endpoint_scopes.filter((s) => typeof s === 'string')
437
+ : null,
438
+ crate_scopes: Array.isArray(row.crate_scopes)
439
+ ? row.crate_scopes.filter((s) => typeof s === 'string')
440
+ : null,
441
+ expired_at: typeof row.expired_at === 'string' ? row.expired_at : null,
442
+ };
443
+ }
444
+ // Crates has no identifying prefix, so we only classify an opaque env var
445
+ // as crates when its *name* is the one the crates handler reads. Kept in
446
+ // sync with src/preflight.ts TOKEN_ENV['crates'].
447
+ const CRATES_ENV_NAMES = new Set(['CARGO_REGISTRY_TOKEN']);
448
+ /**
449
+ * Enumerate registry tokens discoverable to the CLI from the environment.
450
+ *
451
+ * Classification is by *value format*:
452
+ * - `pypi-` prefix → PyPI macaroon
453
+ * - `npm_` prefix → npm granular
454
+ * - opaque value under a crates-recognized env var, iff the config has a
455
+ * crates package → crates.io
456
+ *
457
+ * Token values are never returned or logged.
458
+ *
459
+ * Issue #106. Ships env-only; `--secrets` (repo/env/org secret listing via
460
+ * the stored GitHub user access token) is gated on #105.
461
+ */
462
+ export function tokenList(opts = {}) {
463
+ const env = opts.env ?? process.env;
464
+ const packages = resolvePackages(opts);
465
+ const hasCrates = packages.some((p) => p.kind === 'crates');
466
+ const rows = [];
467
+ for (const [name, raw] of Object.entries(env)) {
468
+ if (typeof raw !== 'string')
469
+ continue;
470
+ const value = raw.trim();
471
+ if (value === '')
472
+ continue;
473
+ if (value.startsWith('pypi-')) {
474
+ rows.push({ registry: 'pypi', source: 'env', name, details: 'pypi- prefix, macaroon' });
475
+ }
476
+ else if (value.startsWith('npm_')) {
477
+ rows.push({ registry: 'npm', source: 'env', name, details: 'npm_ prefix (granular)' });
478
+ }
479
+ else if (hasCrates && CRATES_ENV_NAMES.has(name)) {
480
+ rows.push({ registry: 'crates', source: 'env', name, details: 'opaque (from config)' });
481
+ }
482
+ // anything else: ignored. We never dump the full environment.
483
+ }
484
+ rows.sort((a, b) => (a.registry === b.registry ? a.name.localeCompare(b.name) : a.registry.localeCompare(b.registry)));
485
+ return rows;
486
+ }
487
+ function resolvePackages(opts) {
488
+ if (opts.packages !== undefined)
489
+ return opts.packages;
490
+ const cwd = opts.cwd ?? process.cwd();
491
+ const cfgPath = opts.configPath ?? `${cwd.replace(/\/+$/, '')}/putitoutthere.toml`;
492
+ try {
493
+ return loadConfig(cfgPath).packages;
494
+ }
495
+ catch {
496
+ // No config / unreadable config → env-only, prefix-based classification
497
+ // still works. Crates opaque-tokens are skipped (no config to key on).
498
+ return [];
499
+ }
500
+ }
229
501
  //# sourceMappingURL=token.js.map
package/dist/token.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "putitoutthere",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Polyglot release orchestrator for crates.io, PyPI, and npm",
5
5
  "license": "MIT",
6
6
  "repository": {