Beispiel
regjsgen 0.8.0: generate
Verifiziertes Beispiel für npm regjsgen 0.8.0: generate. Der Vertrag lief auf node 22 · linux debian/x64 · docker und bestand.
sha256:e60f61d1efd34aa162608e7b2b848e0b5282aae5aa4c7f918ffd67d45f10d57a
Dieses Netzwerk bietet eine Sache: ein Sample, das baut. Es hat es in einer Sandbox ausgeführt und die signierte Quittung behalten. Es bewertet nichts und garantiert nichts — ob derselbe Code bei Ihnen baut, hat es nicht gemessen.
Wie viele verschiedene Signaturschlüssel eine bestandene Vertragsquittung eingereicht haben. Einer ist der Autor allein; mehr als einer heißt, jemand anderes hat es auch gebaut. Ein Schlüssel wird selbst erzeugt und hat keine registrierte Identität dahinter — gezählt werden Schlüssel, nicht Personen.
MIT-0
Ausführungsbelege
Die deklarierte Umgebung und die signierten Läufe stehen getrennt, damit Sie genau sehen, was dieses Sample ausgeführt hat und wo.
- Beleggrundlage
- Signierter Vertrag bestanden
- Verifizierungsbelege
- 1
- Signaturschlüssel, die es gebaut haben
- 1
Deklarierte Umgebung
node 22.23 linux 24 · ubuntu · glibc 2.39 x64 node 22.23 javascript npm 10
Umgebungen der Verifizierungsläufe
| Umgebung | Contract | Stufen | Lauf |
|---|---|---|---|
| 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-02 |
Fall
HOW- Ziel
- verify regjsgen.generate in pkg:npm/regjsgen@0.8.0
- Pakete
- Symbole
-
- regjsgen.generate
- Umgebung
- node 22.23.2
- Erstellt
- 2026-09-02T08:47:55Z
Contract
- regjsgen.generate(node) generates RegExp pattern string from AST node
- regjsgen.generate(node) serializes alternative, disjunction, and symbol value nodes
- regjsgen.generate(node) serializes characterClass, characterClassRange, and characterClassEscape nodes
- regjsgen.generate(node) serializes anchor and dot nodes
- regjsgen.generate(node) serializes capturing, named, non-capturing, and lookaround group nodes
- regjsgen.generate(node) serializes greedy and non-greedy quantifier nodes
- regjsgen.generate(node) serializes indexed and named reference nodes
- regjsgen.generate(node) serializes unicodePropertyEscape nodes
- regjsgen.generate(node) throws Error when node type is invalid
- regjsgen.generate(node) throws Error when value codePoint is invalid
Dateien
- PROMPT.md
- csx.json
- package-lock.json
- package.json
- spec.json
- src/index.js
- test/contract.cjs
Quelltext
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 regjsgen.generate in pkg:npm/regjsgen@0.8.0
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:npm/regjsgen@0.8.0
Demonstrate these symbols/APIs:
- regjsgen.generate
Constraints:
- executionContext: node
Required runtime conditions:
- ecosystem: npm
- language: javascript
- moduleSystem: cjs
- packageManager: npm@10.9.8
- runtime: node@22.23.2
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:8c036a23b12229f58c6f3cd1b8df7f7623b15925ff41046b63be4e885d170cd7","constraints":{"executionContext":"node"},"contract":["regjsgen.generate(node) generates RegExp pattern string from AST node","regjsgen.generate(node) serializes alternative, disjunction, and symbol value nodes","regjsgen.generate(node) serializes characterClass, characterClassRange, and characterClassEscape nodes","regjsgen.generate(node) serializes anchor and dot nodes","regjsgen.generate(node) serializes capturing, named, non-capturing, and lookaround group nodes","regjsgen.generate(node) serializes greedy and non-greedy quantifier nodes","regjsgen.generate(node) serializes indexed and named reference nodes","regjsgen.generate(node) serializes unicodePropertyEscape nodes","regjsgen.generate(node) throws Error when node type is invalid","regjsgen.generate(node) throws Error when value codePoint is invalid"],"goal":"verify regjsgen.generate in pkg:npm/regjsgen@0.8.0","kind":"HOW","packages":["pkg:npm/regjsgen@0.8.0"],"schemaVersion":1,"symbols":["regjsgen.generate"]},"contractCommand":["node","test/contract.cjs"],"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/regjsgen@0.8.0"],"schemaVersion":1,"subject":"pkg:npm/regjsgen@0.8.0","symbols":["regjsgen.generate"],"verifierAdapter":"node-typescript@1"}
{
"name": "sample-regjsgen",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sample-regjsgen",
"version": "1.0.0",
"dependencies": {
"regjsgen": "0.8.0"
}
},
"node_modules/regjsgen": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
"integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
"license": "MIT"
}
}
}
{
"name": "sample-regjsgen",
"version": "1.0.0",
"private": true,
"description": "Clean-room verification for regjsgen",
"main": "src/index.js",
"dependencies": {
"regjsgen": "0.8.0"
}
}
{
"schemaVersion": 1,
"goal": "verify regjsgen.generate in pkg:npm/regjsgen@0.8.0",
"kind": "HOW",
"packages": [
"pkg:npm/regjsgen@0.8.0"
],
"symbols": [
"regjsgen.generate"
],
"constraints": {
"executionContext": "node"
},
"runtimeConditions": {
"ecosystem": "npm",
"language": "javascript",
"moduleSystem": "cjs",
"packageManager": "npm@10.9.8",
"runtime": "node@22.23.2"
}
}
const regjsgen = require('regjsgen');
/**
* Generate a regular expression string from an AST node.
* @param {object} node - The AST node to generate regex from.
* @returns {string} The serialized regular expression string.
*/
function generate(node) {
return regjsgen.generate(node);
}
module.exports = {
regjsgen,
generate
};
const assert = require('node:assert');
const regjsgen = require('regjsgen');
const { generate } = require('../src/index.js');
// 1. regjsgen.generate(node) generates RegExp pattern string from AST node
assert.strictEqual(typeof regjsgen.generate, 'function');
assert.strictEqual(generate({ type: 'dot' }), '.');
// 2. regjsgen.generate(node) serializes alternative, disjunction, and symbol value nodes
const alt = {
type: 'alternative',
body: [
{ type: 'value', kind: 'symbol', codePoint: 97 },
{ type: 'value', kind: 'symbol', codePoint: 98 }
]
};
assert.strictEqual(regjsgen.generate(alt), 'ab');
assert.strictEqual(generate(alt), 'ab');
const disj = {
type: 'disjunction',
body: [
{ type: 'value', kind: 'symbol', codePoint: 97 },
{ type: 'value', kind: 'symbol', codePoint: 98 }
]
};
assert.strictEqual(regjsgen.generate(disj), 'a|b');
// 3. regjsgen.generate(node) serializes characterClass, characterClassRange, and characterClassEscape nodes
const charClass = {
type: 'characterClass',
negative: false,
body: [
{
type: 'characterClassRange',
min: { type: 'value', kind: 'symbol', codePoint: 97 },
max: { type: 'value', kind: 'symbol', codePoint: 122 }
},
{ type: 'characterClassEscape', value: 'd' }
]
};
assert.strictEqual(regjsgen.generate(charClass), '[a-z\\d]');
const negClass = {
type: 'characterClass',
negative: true,
body: [{ type: 'value', kind: 'symbol', codePoint: 48 }]
};
assert.strictEqual(regjsgen.generate(negClass), '[^0]');
// 4. regjsgen.generate(node) serializes anchor and dot nodes
assert.strictEqual(regjsgen.generate({ type: 'anchor', kind: 'start' }), '^');
assert.strictEqual(regjsgen.generate({ type: 'anchor', kind: 'end' }), '$');
assert.strictEqual(regjsgen.generate({ type: 'anchor', kind: 'boundary' }), '\\b');
assert.strictEqual(regjsgen.generate({ type: 'anchor', kind: 'not-boundary' }), '\\B');
assert.strictEqual(regjsgen.generate({ type: 'dot' }), '.');
// 5. regjsgen.generate(node) serializes capturing, named, non-capturing, and lookaround group nodes
const namedGroup = {
type: 'group',
behavior: 'normal',
name: { type: 'identifier', value: 'word' },
body: [{ type: 'characterClassEscape', value: 'w' }]
};
assert.strictEqual(regjsgen.generate(namedGroup), '(?<word>\\w)');
const nonCapGroup = {
type: 'group',
behavior: 'ignore',
body: [{ type: 'value', kind: 'symbol', codePoint: 97 }]
};
assert.strictEqual(regjsgen.generate(nonCapGroup), '(?:a)');
const lookahead = {
type: 'group',
behavior: 'lookahead',
body: [{ type: 'value', kind: 'symbol', codePoint: 97 }]
};
assert.strictEqual(regjsgen.generate(lookahead), '(?=a)');
const negLookahead = {
type: 'group',
behavior: 'negativeLookahead',
body: [{ type: 'value', kind: 'symbol', codePoint: 97 }]
};
assert.strictEqual(regjsgen.generate(negLookahead), '(?!a)');
const lookbehind = {
type: 'group',
behavior: 'lookbehind',
body: [{ type: 'value', kind: 'symbol', codePoint: 97 }]
};
assert.strictEqual(regjsgen.generate(lookbehind), '(?<=a)');
const negLookbehind = {
type: 'group',
behavior: 'negativeLookbehind',
body: [{ type: 'value', kind: 'symbol', codePoint: 97 }]
};
assert.strictEqual(regjsgen.generate(negLookbehind), '(?<!a)');
// 6. regjsgen.generate(node) serializes greedy and non-greedy quantifier nodes
const star = {
type: 'quantifier',
min: 0,
max: null,
greedy: true,
body: [{ type: 'dot' }]
};
assert.strictEqual(regjsgen.generate(star), '.*');
const plus = {
type: 'quantifier',
min: 1,
max: null,
greedy: true,
body: [{ type: 'dot' }]
};
assert.strictEqual(regjsgen.generate(plus), '.+');
const optional = {
type: 'quantifier',
min: 0,
max: 1,
greedy: true,
body: [{ type: 'dot' }]
};
assert.strictEqual(regjsgen.generate(optional), '.?');
const rangeQuant = {
type: 'quantifier',
min: 2,
max: 5,
greedy: false,
body: [{ type: 'characterClassEscape', value: 'd' }]
};
assert.strictEqual(regjsgen.generate(rangeQuant), '\\d{2,5}?');
// 7. regjsgen.generate(node) serializes indexed and named reference nodes
const numRef = {
type: 'reference',
matchIndex: 1
};
assert.strictEqual(regjsgen.generate(numRef), '\\1');
const namedRef = {
type: 'reference',
name: { type: 'identifier', value: 'word' }
};
assert.strictEqual(regjsgen.generate(namedRef), '\\k<word>');
// 8. regjsgen.generate(node) serializes unicodePropertyEscape nodes
const uProp = {
type: 'unicodePropertyEscape',
value: 'Letter',
negative: false
};
assert.strictEqual(regjsgen.generate(uProp), '\\p{Letter}');
const negUProp = {
type: 'unicodePropertyEscape',
value: 'ASCII',
negative: true
};
assert.strictEqual(regjsgen.generate(negUProp), '\\P{ASCII}');
// 9. regjsgen.generate(node) throws Error when node type is invalid
assert.throws(() => regjsgen.generate({ type: 'invalidType' }), /Invalid node type/);
// 10. regjsgen.generate(node) throws Error when value codePoint is invalid
assert.throws(() => regjsgen.generate({ type: 'value', kind: 'symbol', codePoint: 'invalid' }), /Invalid code point/);
console.log('Contract tests passed successfully.');
Ursprungs-Seeder
anonym