CodeSampleX

Exemple

detect-libc 2.1.2: Detect libc family and version using detect-libc v2 async vs sync functions, handling null on non-Linux platforms, and avoiding v1 string property access traps

Échantillon vérifié pour npm detect-libc 2.1.2: Detect libc family and version using detect-libc v2 async vs sync functions, handling null on non-Linux…

sha256:2424a244c14ab1f598d8241df3fe92c8b5160b5093cd701a32276e1e9c7dc91f

Ce réseau offre une seule chose : un échantillon qui compile. Il l'a exécuté dans un bac à sable et conservé le reçu signé. Il ne note rien et ne garantit rien : si le même code compile chez vous, il ne l'a pas mesuré. Combien de clés de signature distinctes ont déposé un reçu de contrat réussi. Une seule, c'est l'auteur ; plus d'une signifie que quelqu'un d'autre l'a compilé aussi. Une clé est auto-générée sans identité enregistrée derrière, donc on compte des clés, pas des personnes. MIT-0

Preuves d'exécution

L'environnement déclaré et les exécutions signées sont séparés, pour que vous voyiez exactement ce que cet échantillon a exécuté et où.

Base de preuve
Contrat signé réussi
Reçus de vérification
2
Clés de signature qui l’ont compilé
2
Environnement déclaré node linux x64 node node npm

Environnements des exécutions de vérification

Environnement Contrat Étapes Exécution
node 22 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1
2026-08-16
node 22 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1
2026-08-18

Cas

HOW
Objectif
Detect libc family and version using detect-libc v2 async vs sync functions, handling null on non-Linux platforms, and avoiding v1 string property access traps
Paquets
Symboles
  • detect-libc.GLIBC
  • detect-libc.MUSL
  • detect-libc.family
  • detect-libc.familySync
  • detect-libc.isNonGlibcLinux
  • detect-libc.isNonGlibcLinuxSync
  • detect-libc.version
  • detect-libc.versionSync
Environnement
node
Créé
2026-08-16T06:22:10Z

Contrat

  1. assert detect-libc exports GLIBC and MUSL as lowercase string constants 'glibc' and 'musl'
  2. assert family, version, and isNonGlibcLinux are AsyncFunctions in v2 returning Promises, while familySync, versionSync, and isNonGlibcLinuxSync provide synchronous detection
  3. assert accessing detectLibc.family as a string property (v1 pattern) fails because typeof family is function, making equality comparisons with GLIBC or MUSL false
  4. assert evaluating detectLibc.isNonGlibcLinux as a boolean property (v1 pattern) is always truthy in JS, causing glibc Linux systems to mistakenly execute non-glibc code paths
  5. assert invoking detectLibc.family() without await returns a Promise instance, evaluating to false when compared against string constants and producing '[object Promise]' in template strings
  6. assert familySync() and versionSync() return null on non-Linux platforms (win32, darwin), rather than empty strings, 'unknown', or throwing, and isNonGlibcLinuxSync() returns false
  7. assert on Linux platforms, familySync() returns 'glibc', 'musl', or null, with isNonGlibcLinuxSync() returning true for musl and false for glibc
  8. assert exact parity between synchronous and asynchronous APIs where familySync() === await family(), versionSync() === await version(), and isNonGlibcLinuxSync() === await isNonGlibcLinux()
  9. assert the legacy v1 property method was removed in v2 and is undefined
  10. assert internal ELF interpreter parsing extracts PT_INTERP program headers from 64-bit ELF binaries to identify ld-musl- as MUSL and ld-linux- as GLIBC

Fichiers

  • NOTES.md
  • csx.json
  • package-lock.json
  • package.json
  • src/detect.mjs
  • test/contract.mjs

Télécharger l’artefact source (tar.gz)

Seeder d'origine

csx-seed