Ejemplo
escodegen 2.1.0: generate
Muestra verificada para npm escodegen 2.1.0: generate. El contrato se ejecutó en node 22 · linux alpine/x64 · docker y pasó: escodegen.generate is exported…
sha256:79dffeb62a2013600a12e57d90ae1ba119ede1b1b82df4df5afa8ccaae1c7bf1
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
node 22.23 linux 24 · ubuntu · glibc 2.39 x64 node 22.23 javascript npm 10
Entornos de las ejecuciones de verificación
| Entorno | Contrato | Etapas | Ejecución |
|---|---|---|---|
| node 22 · linux alpine/x64 · docker ed25519:c1973797be207ac4 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · node-typescript@1node:22-alpine@sha256:c610fcdfb1d5… |
2026-08-23 |
Caso
HOW- Objetivo
- verify escodegen.generate in pkg:npm/escodegen@2.1.0
- Paquetes
- Símbolos
-
- escodegen.generate
- Entorno
- node 22.23.2
- Creado
- 2026-08-23T15:42:11Z
Contrato
- escodegen.generate is exported as a function
- generate produces JavaScript code string from standard AST Program and VariableDeclaration nodes
- generate produces code for binary expressions and function calls
- generate respects format options such as semicolons and compact output
Archivos
- PROMPT.md
- csx.json
- package-lock.json
- package.json
- spec.json
- src/index.js
- 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 escodegen.generate in pkg:npm/escodegen@2.1.0
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:npm/escodegen@2.1.0
Demonstrate these symbols/APIs:
- escodegen.generate
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:24c86bfbf58855c1faf68e94aea938f9f4583065a324c253b9be1980d3c2ee9b","contract":["escodegen.generate is exported as a function","generate produces JavaScript code string from standard AST Program and VariableDeclaration nodes","generate produces code for binary expressions and function calls","generate respects format options such as semicolons and compact output"],"goal":"verify escodegen.generate in pkg:npm/escodegen@2.1.0","kind":"HOW","packages":["pkg:npm/escodegen@2.1.0"],"schemaVersion":1,"symbols":["escodegen.generate"]},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"npm","executionContext":"node","language":"javascript","libc":"glibc","libcVersion":"2.39","moduleSystem":"cjs","os":"linux","osVersionBucket":"24","packageManager":"npm","packageManagerVersion":"10.9.8","runtime":"node","runtimeVersion":"22.23.2","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/escodegen@2.1.0"],"schemaVersion":1,"subject":"pkg:npm/escodegen@2.1.0","symbols":["escodegen.generate"],"verifierAdapter":"node-typescript@1"}
{
"name": "sample-escodegen-generate",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sample-escodegen-generate",
"version": "1.0.0",
"license": "MIT-0",
"dependencies": {
"escodegen": "2.1.0"
}
},
"node_modules/escodegen": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
"integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"license": "BSD-2-Clause",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
"esutils": "^2.0.2"
},
"bin": {
"escodegen": "bin/escodegen.js",
"esgenerate": "bin/esgenerate.js"
},
"engines": {
"node": ">=6.0"
},
"optionalDependencies": {
"source-map": "~0.6.1"
}
},
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"license": "BSD-3-Clause",
"optional": true,
"engines": {
"node": ">=0.10.0"
}
}
}
}
{
"name": "sample-escodegen-generate",
"version": "1.0.0",
"private": true,
"description": "verify escodegen.generate in pkg:npm/escodegen@2.1.0",
"main": "src/index.js",
"license": "MIT-0",
"dependencies": {
"escodegen": "2.1.0"
}
}
{
"schemaVersion": 1,
"goal": "verify escodegen.generate in pkg:npm/escodegen@2.1.0",
"kind": "HOW",
"packages": [
"pkg:npm/escodegen@2.1.0"
],
"symbols": [
"escodegen.generate"
]
}
const escodegen = require('escodegen');
/**
* Generates JavaScript code from an ESTree-compatible Abstract Syntax Tree.
* @param {object} ast - The AST node or program to generate code from.
* @param {object} [options] - Formatting and generation options.
* @returns {string} The generated JavaScript source code.
*/
function generateCode(ast, options) {
return escodegen.generate(ast, options);
}
/**
* Generates a variable declaration statement AST and converts it to code.
* @param {string} kind - 'var', 'let', or 'const'.
* @param {string} name - Variable name identifier.
* @param {any} value - Literal value.
* @param {object} [options] - Formatting options.
* @returns {string} Generated JavaScript code.
*/
function generateVariable(kind, name, value, options) {
const ast = {
type: 'VariableDeclaration',
kind: kind,
declarations: [
{
type: 'VariableDeclarator',
id: { type: 'Identifier', name: name },
init: { type: 'Literal', value: value, raw: JSON.stringify(value) }
}
]
};
return escodegen.generate(ast, options);
}
module.exports = {
generateCode,
generateVariable,
generate: escodegen.generate
};
import assert from 'node:assert/strict';
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
const escodegen = require('escodegen');
const { generateCode, generateVariable, generate } = require('../src/index.js');
// 1. Verify escodegen.generate is exported and callable
assert.strictEqual(typeof escodegen.generate, 'function', 'escodegen.generate must be a function');
assert.strictEqual(generate, escodegen.generate, 'exported generate must match escodegen.generate');
// 2. generate produces JavaScript code string from standard AST Program and VariableDeclaration nodes
const programAst = {
type: 'Program',
body: [
{
type: 'VariableDeclaration',
kind: 'const',
declarations: [
{
type: 'VariableDeclarator',
id: { type: 'Identifier', name: 'greeting' },
init: { type: 'Literal', value: 'Hello, World!', raw: "'Hello, World!'" }
}
]
}
],
sourceType: 'script'
};
const codeFromProgram = generateCode(programAst);
assert.strictEqual(codeFromProgram.trim(), "const greeting = 'Hello, World!';");
const varCode = generateVariable('let', 'count', 42);
assert.strictEqual(varCode.trim(), 'let count = 42;');
// 3. generate produces code for binary expressions and function calls
const binaryAst = {
type: 'BinaryExpression',
operator: '+',
left: { type: 'Literal', value: 40, raw: '40' },
right: { type: 'Literal', value: 2, raw: '2' }
};
const binaryCode = generateCode(binaryAst);
assert.strictEqual(binaryCode.trim(), '40 + 2');
const callAst = {
type: 'CallExpression',
callee: { type: 'Identifier', name: 'calculate' },
arguments: [
{ type: 'Literal', value: 10, raw: '10' },
{ type: 'Literal', value: 20, raw: '20' }
]
};
const callCode = generateCode(callAst);
assert.strictEqual(callCode.trim(), 'calculate(10, 20)');
// 4. generate respects format options such as semicolons and compact output
const noSemicolonCode = generateCode(programAst, {
format: {
semicolons: false
}
});
assert.strictEqual(noSemicolonCode.trim(), "const greeting = 'Hello, World!'");
const compactCode = generateCode(programAst, {
format: {
compact: true
}
});
assert.strictEqual(compactCode.trim(), "const greeting='Hello, World!';");
console.log('Contract assertions passed.');
Seeder de origen
anónimo