@bash0816/claude-code 2.1.154-1 → 2.1.154-2

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.
@@ -4,7 +4,7 @@
4
4
  "canonical_package_name": "@bash0816/claude-code",
5
5
  "canonical_manifest_url": "https://raw.githubusercontent.com/bash0816/ClaudeCode-Termux/main/config/claude-termux-release-manifest.json",
6
6
  "canonical_repository_url": "https://github.com/bash0816/ClaudeCode-Termux",
7
- "bridge_package_version": "2.1.154-1",
7
+ "bridge_package_version": "2.1.154-2",
8
8
  "default_native_version": "2.1.154",
9
9
  "latest_audited_version": "2.1.154",
10
10
  "latest_candidate_version": "2.1.154",
@@ -351,6 +351,104 @@ function wrapAnsi(str, columns, options) {
351
351
  return result.join('');
352
352
  }
353
353
 
354
+ const YAML = {
355
+ parse(text) {
356
+ try {
357
+ const lines = String(text).split('\n');
358
+ const result = {};
359
+ for (const line of lines) {
360
+ const m = line.match(/^([^:#]+):\s*(.*)$/);
361
+ if (m) result[m[1].trim()] = m[2].trim().replace(/^['"]|['"]$/g, '');
362
+ }
363
+ return result;
364
+ } catch { return {}; }
365
+ },
366
+ stringify(obj) {
367
+ try {
368
+ return Object.entries(obj || {}).map(([k, v]) => k + ': ' + v).join('\n') + '\n';
369
+ } catch { return ''; }
370
+ },
371
+ };
372
+
373
+ function parseSemverVersion(value) {
374
+ const text = String(value ?? '').trim().replace(/^[v=]/, '');
375
+ const match = text.match(/^(0|[1-9]\d*)(?:\.(0|[1-9]\d*))?(?:\.(0|[1-9]\d*))?(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/);
376
+ if (!match) return null;
377
+ return {
378
+ parts: [match[1], match[2] ?? '0', match[3] ?? '0'].map(Number),
379
+ pre: match[4] ? match[4].split('.') : null,
380
+ };
381
+ }
382
+
383
+ function comparePrerelease(a, b) {
384
+ const size = Math.max(a.length, b.length);
385
+ for (let i = 0; i < size; i++) {
386
+ if (a[i] === undefined) return -1;
387
+ if (b[i] === undefined) return 1;
388
+ const aNum = /^\d+$/.test(a[i]);
389
+ const bNum = /^\d+$/.test(b[i]);
390
+ if (aNum && bNum) { const d = Number(a[i]) - Number(b[i]); if (d) return d < 0 ? -1 : 1; }
391
+ else if (aNum) return -1;
392
+ else if (bNum) return 1;
393
+ else if (a[i] < b[i]) return -1;
394
+ else if (a[i] > b[i]) return 1;
395
+ }
396
+ return 0;
397
+ }
398
+
399
+ const semver = {
400
+ order(left, right) {
401
+ const a = parseSemverVersion(left), b = parseSemverVersion(right);
402
+ if (!a || !b) return NaN;
403
+ for (let i = 0; i < 3; i++) {
404
+ const d = a.parts[i] - b.parts[i];
405
+ if (d) return d < 0 ? -1 : 1;
406
+ }
407
+ if (a.pre && !b.pre) return -1;
408
+ if (!a.pre && b.pre) return 1;
409
+ if (a.pre && b.pre) return comparePrerelease(a.pre, b.pre);
410
+ return 0;
411
+ },
412
+ satisfies(version, range) {
413
+ if (!version || !range) return false;
414
+ const v = String(version).replace(/^[v=]/, '');
415
+ const clean = String(range).trim();
416
+ if (!clean) return false;
417
+ if (clean.includes('||')) return clean.split('||').some(r => semver.satisfies(v, r.trim()));
418
+ const parts = clean.split(/\s+/).filter(Boolean);
419
+ if (parts.length > 1) return parts.every(p => semver.satisfies(v, p));
420
+ const caret = clean.match(/^\^([0-9].*)$/);
421
+ if (caret) {
422
+ const p = parseSemverVersion(caret[1]);
423
+ if (!p) return false;
424
+ const upper = p.parts[0] > 0 ? (p.parts[0] + 1) + '.0.0'
425
+ : p.parts[1] > 0 ? '0.' + (p.parts[1] + 1) + '.0'
426
+ : '0.0.' + (p.parts[2] + 1);
427
+ return semver.satisfies(v, '>=' + caret[1]) && semver.satisfies(v, '<' + upper);
428
+ }
429
+ const tilde = clean.match(/^~([0-9].*)$/);
430
+ if (tilde) {
431
+ const p = parseSemverVersion(tilde[1]);
432
+ if (!p) return false;
433
+ const original = tilde[1].split('.');
434
+ const upper = original.length >= 2
435
+ ? p.parts[0] + '.' + (p.parts[1] + 1) + '.0'
436
+ : (p.parts[0] + 1) + '.0.0';
437
+ return semver.satisfies(v, '>=' + tilde[1]) && semver.satisfies(v, '<' + upper);
438
+ }
439
+ const m = clean.match(/^([><=!]{1,2})\s*([0-9].*)$/);
440
+ if (m) {
441
+ const cmp = semver.order(v, m[2]);
442
+ if (!Number.isFinite(cmp)) return false;
443
+ return m[1] === '>=' ? cmp >= 0 : m[1] === '>' ? cmp > 0 :
444
+ m[1] === '<=' ? cmp <= 0 : m[1] === '<' ? cmp < 0 :
445
+ m[1] === '=' || m[1] === '==' ? cmp === 0 : m[1] === '!=' ? cmp !== 0 : false;
446
+ }
447
+ const exact = parseSemverVersion(clean);
448
+ return exact ? semver.order(v, clean) === 0 : false;
449
+ },
450
+ };
451
+
354
452
  async function main() {
355
453
  const extractedFile = ensureEntryFile();
356
454
  const code = fs.readFileSync(extractedFile, 'utf8');
@@ -379,6 +477,15 @@ async function main() {
379
477
  which,
380
478
  wrapAnsi,
381
479
  stripANSI,
480
+ semver,
481
+ YAML,
482
+ gc: (sync) => {
483
+ try {
484
+ if (typeof global.gc === 'function') global.gc(sync === false ? false : true);
485
+ } catch {}
486
+ },
487
+ stdin: { stream: null },
488
+ embeddedFiles: [],
382
489
  };
383
490
  const BunProxy = new Proxy(BunShim, {
384
491
  get(target, key, receiver) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bash0816/claude-code",
3
- "version": "2.1.154-1",
3
+ "version": "2.1.154-2",
4
4
  "description": "Termux-native Claude Code wrapper with audited native replay",
5
5
  "license": "MIT",
6
6
  "bin": {