Ejemplo
std-env 4.2.0: providerInfo
Muestra verificada para npm std-env 4.2.0: providerInfo. El contrato se ejecutó en node 22 · linux debian/x64 · docker y pasó.
sha256:913d3c0171714daa1a77e28e7960a1a5a9ed0da4eb569a039cbefc8500db7fbe
Esta red ofrece una sola cosa: una muestra que compila. La ejecutó en un sandbox y guardó el recibo firmado. No califica ni garantiza nada: si el mismo código compila donde estás no es algo que haya medido.
Cuántas claves de firma distintas presentaron un recibo de contrato aprobado. Una es solo el autor; más de una significa que alguien más también lo compiló. Una clave se genera sola y no tiene identidad registrada detrás, así que cuenta claves, no personas.
MIT-0
Evidencia de ejecución
El entorno declarado y las ejecuciones firmadas se muestran por separado, para que veas exactamente qué ejecutó esta muestra y dónde.
- Base de evidencia
- Contrato firmado aprobado
- Recibos de verificación
- 1
- Claves de firma que lo compilaron
- 1
Entorno declarado
linux 24 · ubuntu · glibc 2.39 x64 npm
Entornos de las ejecuciones de verificación
| Entorno | Contrato | Etapas | Ejecución |
|---|---|---|---|
| node 22 · linux debian/x64 · docker ed25519:c1973797be207ac4 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · node-typescript@1node:22@sha256:8a34c4ab3ea2… |
2026-09-17 |
Caso
HOW- Objetivo
- verify std-env.providerInfo in pkg:npm/std-env@4.2.0
- Paquetes
- Símbolos
-
- std-env.providerInfo
- Creado
- 2026-09-17T00:57:06Z
Contrato
- std-env.providerInfo is an object containing name property of type string
- std-env.providerInfo defaults to empty name string and ci false when no provider environment variables are present
- std-env.providerInfo detects CI/CD provider github_actions when GITHUB_ACTIONS environment variable is set
- std-env.providerInfo detects deployment provider vercel when VERCEL environment variable is set
- std-env.providerInfo detects aws_amplify with ci true when AWS_APP_ID environment variable is set
- std-env.detectProvider evaluates dynamic environment variable modifications and returns corresponding ProviderInfo
- helper functions getProviderInfo, getProviderName, isProviderDetected, and refreshProviderInfo expose provider state
Archivos
- PROMPT.md
- csx.json
- package-lock.json
- package.json
- spec.json
- src/index.mjs
- test/contract.mjs
Código fuente
Clean-room public code sample — generation instructions
Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.
A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.
Goal: verify std-env.providerInfo in pkg:npm/std-env@4.2.0
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:npm/std-env@4.2.0
Demonstrate these symbols/APIs:
- std-env.providerInfo
Rules:
- One focused purpose; the smallest project that proves the goal.
- Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
- Pin every dependency with a lockfile so resolution is reproducible.
- No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
- No personal names, emails, company names, or project identifiers of any kind.
- No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
- Keep it under 200 files and 256KB packed.
{"case":{"caseId":"case:sha256:237c5c9ea7ec2f69ebaf3296ee722f8b2dbcf4ba9872cf0999ae8b543ddabfd2","contract":["std-env.providerInfo is an object containing name property of type string","std-env.providerInfo defaults to empty name string and ci false when no provider environment variables are present","std-env.providerInfo detects CI/CD provider github_actions when GITHUB_ACTIONS environment variable is set","std-env.providerInfo detects deployment provider vercel when VERCEL environment variable is set","std-env.providerInfo detects aws_amplify with ci true when AWS_APP_ID environment variable is set","std-env.detectProvider evaluates dynamic environment variable modifications and returns corresponding ProviderInfo","helper functions getProviderInfo, getProviderName, isProviderDetected, and refreshProviderInfo expose provider state"],"goal":"verify std-env.providerInfo in pkg:npm/std-env@4.2.0","kind":"HOW","packages":["pkg:npm/std-env@4.2.0"],"schemaVersion":1,"symbols":["std-env.providerInfo"]},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"npm","libc":"glibc","libcVersion":"2.39","os":"linux","osVersionBucket":"24","packageManager":"npm","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/std-env@4.2.0"],"schemaVersion":1,"subject":"pkg:npm/std-env@4.2.0","symbols":["std-env.providerInfo"],"verifierAdapter":"node-typescript@1"}
{
"name": "sample-std-env",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sample-std-env",
"version": "1.0.0",
"license": "MIT-0",
"dependencies": {
"std-env": "4.2.0"
}
},
"node_modules/std-env": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz",
"integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==",
"license": "MIT"
}
}
}
{
"name": "sample-std-env",
"version": "1.0.0",
"private": true,
"type": "module",
"license": "MIT-0",
"dependencies": {
"std-env": "4.2.0"
}
}
{
"schemaVersion": 1,
"goal": "verify std-env.providerInfo in pkg:npm/std-env@4.2.0",
"kind": "HOW",
"packages": [
"pkg:npm/std-env@4.2.0"
],
"symbols": [
"std-env.providerInfo"
]
}
import { providerInfo, detectProvider, provider } from "std-env";
/**
* Returns the detected provider information object from std-env.
* @returns {import("std-env").ProviderInfo}
*/
export function getProviderInfo() {
return providerInfo;
}
/**
* Returns the name of the detected provider, or an empty string if none is detected.
* @returns {string}
*/
export function getProviderName() {
return providerInfo.name || "";
}
/**
* Returns whether a provider has been detected in the current environment.
* @returns {boolean}
*/
export function isProviderDetected() {
return Boolean(providerInfo.name);
}
/**
* Evaluates provider detection dynamically against current process.env.
* @returns {import("std-env").ProviderInfo}
*/
export function refreshProviderInfo() {
return detectProvider();
}
export { providerInfo, detectProvider, provider };
import assert from "node:assert/strict";
import {
providerInfo,
detectProvider,
provider,
getProviderInfo,
getProviderName,
isProviderDetected,
refreshProviderInfo
} from "../src/index.mjs";
const stdEnvUrl = typeof import.meta.resolve === "function"
? import.meta.resolve("std-env")
: new URL("../node_modules/std-env/dist/index.mjs", import.meta.url).href;
const providerEnvKeys = [
"APPVEYOR",
"AWS_APP_ID",
"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",
"INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN",
"AC_APPCIRCLE",
"bamboo_planKey",
"BITBUCKET_COMMIT",
"BITRISE_IO",
"BUDDY_WORKSPACE_ID",
"BUILDKITE",
"CIRCLECI",
"CIRRUS_CI",
"CF_PAGES",
"WORKERS_CI",
"K_SERVICE",
"CLOUD_RUN_JOB",
"CODEBUILD_BUILD_ARN",
"CF_BUILD_ID",
"DRONE",
"DRONE_BUILD_EVENT",
"DSARI",
"GITHUB_ACTIONS",
"GITLAB_CI",
"CI_MERGE_REQUEST_ID",
"GO_PIPELINE_LABEL",
"LAYERCI",
"JENKINS_URL",
"HUDSON_URL",
"MAGNUM",
"NETLIFY",
"NETLIFY_LOCAL",
"NEVERCODE",
"RENDER",
"SAILCI",
"SEMAPHORE",
"SCREWDRIVER",
"SHIPPABLE",
"TDDIUM",
"STRIDER",
"TEAMCITY_VERSION",
"TRAVIS",
"NOW_BUILDER",
"VERCEL",
"VERCEL_ENV",
"APPCENTER_BUILD_ID",
"CODESANDBOX_SSE",
"CODESANDBOX_HOST",
"STACKBLITZ",
"STORMKIT",
"CLEAVR",
"ZEABUR",
"CODESPHERE_APP_ID",
"RAILWAY_PROJECT_ID",
"RAILWAY_SERVICE_ID",
"DENO_DEPLOY",
"DENO_DEPLOYMENT_ID",
"FIREBASE_APP_HOSTING",
"EO_PAGES_CI"
];
function clearProviderEnv() {
for (const key of providerEnvKeys) {
delete process.env[key];
}
}
async function runTests() {
// 1. std-env.providerInfo is an object containing name property of type string
assert.equal(typeof providerInfo, "object", "providerInfo must be an object");
assert.ok(providerInfo !== null, "providerInfo must not be null");
assert.equal(typeof providerInfo.name, "string", "providerInfo.name must be a string");
assert.equal(typeof provider, "string", "provider export must be a string");
// 2. std-env.providerInfo defaults to empty name string and ci false when no provider environment variables are present
clearProviderEnv();
const cleanMod = await import(`${stdEnvUrl}?case=clean_${Date.now()}`);
assert.equal(cleanMod.providerInfo.name, "", "clean providerInfo.name should be empty string");
assert.equal(cleanMod.providerInfo.ci, false, "clean providerInfo.ci should be false");
// 3. std-env.providerInfo detects CI/CD provider github_actions when GITHUB_ACTIONS environment variable is set
clearProviderEnv();
process.env.GITHUB_ACTIONS = "true";
const githubMod = await import(`${stdEnvUrl}?case=github_${Date.now()}`);
assert.equal(githubMod.providerInfo.name, "github_actions", "providerInfo.name should be github_actions");
clearProviderEnv();
// 4. std-env.providerInfo detects deployment provider vercel when VERCEL environment variable is set
clearProviderEnv();
process.env.VERCEL = "1";
const vercelMod = await import(`${stdEnvUrl}?case=vercel_${Date.now()}`);
assert.equal(vercelMod.providerInfo.name, "vercel", "providerInfo.name should be vercel");
assert.equal(vercelMod.providerInfo.ci, false, "vercel providerInfo.ci should default to false");
clearProviderEnv();
// 5. std-env.providerInfo detects aws_amplify with ci true when AWS_APP_ID environment variable is set
clearProviderEnv();
process.env.AWS_APP_ID = "d12345example";
const awsMod = await import(`${stdEnvUrl}?case=aws_${Date.now()}`);
assert.equal(awsMod.providerInfo.name, "aws_amplify", "providerInfo.name should be aws_amplify");
assert.equal(awsMod.providerInfo.ci, true, "aws_amplify providerInfo.ci should be true");
clearProviderEnv();
// 6. std-env.detectProvider evaluates dynamic environment variable modifications and returns corresponding ProviderInfo
clearProviderEnv();
process.env.NETLIFY = "true";
const netlifyInfo = detectProvider();
assert.equal(netlifyInfo.name, "netlify", "detectProvider should detect netlify");
clearProviderEnv();
process.env.GITLAB_CI = "true";
const gitlabInfo = detectProvider();
assert.equal(gitlabInfo.name, "gitlab", "detectProvider should detect gitlab");
clearProviderEnv();
process.env.CIRCLECI = "true";
const circleInfo = detectProvider();
assert.equal(circleInfo.name, "circle", "detectProvider should detect circle");
clearProviderEnv();
const emptyInfo = detectProvider();
assert.equal(emptyInfo.name, "", "detectProvider should return empty name when no provider vars");
assert.equal(emptyInfo.ci, false, "detectProvider ci flag should be false when no provider vars");
// 7. helper functions getProviderInfo, getProviderName, isProviderDetected, and refreshProviderInfo expose provider state
assert.equal(getProviderInfo(), providerInfo, "getProviderInfo returns providerInfo reference");
assert.equal(getProviderName(), providerInfo.name, "getProviderName matches providerInfo.name");
assert.equal(isProviderDetected(), Boolean(providerInfo.name), "isProviderDetected checks presence of provider name");
clearProviderEnv();
process.env.CODEBUILD_BUILD_ARN = "arn:aws:codebuild:region:account:build/project:123";
const refreshed = refreshProviderInfo();
assert.equal(refreshed.name, "codebuild", "refreshProviderInfo should reflect dynamically set provider");
clearProviderEnv();
console.log("All std-env.providerInfo contract assertions passed.");
}
runTests().catch((err) => {
console.error("Contract test failed:", err);
process.exit(1);
});
Seeder de origen
anónimo