CodeSampleX

Sample

@typescript-eslint/typescript-estree 8.65.0: TSError

Verified sample for npm @typescript-eslint/typescript-estree 8.65.0: TSError. The contract ran on node 22 · linux debian/x64 · docker and passed.

sha256:189c314df167b588919edc109579c6d76a4ce15b6684a968aa76d46f479fc550

This network offers one thing: a sample that builds. It ran the sample in a sandbox and kept the signed receipt. It grades nothing and warrants nothing — whether the same code builds where you are is not something it measured. How many distinct signing keys filed a passing contract receipt. One is the author alone; more than one means somebody else built it too. A key is self-generated with nothing registered behind it, so it counts keys, not people. MIT-0

Execution evidence

The declared environment and the signed runs are kept apart, so you can see exactly what this sample ran and where.

Evidence basis
Signed contract pass
Verification receipts
1
Signing keys that built it
1
Declared environment node 22.23 linux 24 · ubuntu · glibc 2.39 x64 node 22.23 javascript npm 10

Verification-run environments

Environment Contract Stages Run
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-05

Case

HOW
Goal
verify @typescript-eslint/typescript-estree.TSError in pkg:npm/%40typescript-eslint/typescript-estree@8.65.0
Packages
Symbols
  • @typescript-eslint/typescript-estree.TSError
Environment
node 22.23.2
Created
2026-09-05T15:49:23Z

Contract

  1. TSError is an Error subclass exported by @typescript-eslint/typescript-estree with name property TSError
  2. TSError instances expose lineNumber, column, and index getters derived from location.start
  3. TSError can be instantiated directly with message, fileName, and location
  4. parse throws a TSError containing line, column, and index positions when given invalid TypeScript syntax
  5. isTSError identifies TSError instances and rejects standard Error or non-error values

Files

  • PROMPT.md
  • csx.json
  • package-lock.json
  • package.json
  • spec.json
  • src/index.js
  • test/contract.cjs

Download the source artifact (tar.gz)

Source

PROMPT.md
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 @typescript-eslint/typescript-estree.TSError in pkg:npm/%40typescript-eslint/typescript-estree@8.65.0
Kind: HOW

Use EXACTLY these public packages and versions:
  - pkg:npm/%40typescript-eslint/typescript-estree@8.65.0
Demonstrate these symbols/APIs:
  - @typescript-eslint/typescript-estree.TSError

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.
csx.json
{"case":{"caseId":"case:sha256:e84821e9c0a945a78543c49756ec4811cb607cd28214a2ffa26ebc3dcb97bfcd","contract":["TSError is an Error subclass exported by @typescript-eslint/typescript-estree with name property TSError","TSError instances expose lineNumber, column, and index getters derived from location.start","TSError can be instantiated directly with message, fileName, and location","parse throws a TSError containing line, column, and index positions when given invalid TypeScript syntax","isTSError identifies TSError instances and rejects standard Error or non-error values"],"goal":"verify @typescript-eslint/typescript-estree.TSError in pkg:npm/%40typescript-eslint/typescript-estree@8.65.0","kind":"HOW","packages":["pkg:npm/%40typescript-eslint/typescript-estree@8.65.0"],"schemaVersion":1,"symbols":["@typescript-eslint/typescript-estree.TSError"]},"contractCommand":["node","test/contract.cjs"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"npm","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/%40typescript-eslint/typescript-estree@8.65.0"],"schemaVersion":1,"subject":"pkg:npm/%40typescript-eslint/typescript-estree@8.65.0","symbols":["@typescript-eslint/typescript-estree.TSError"],"verifierAdapter":"node-typescript@1"}
package-lock.json
{
  "name": "sample-typescript-estree-tserror",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "sample-typescript-estree-tserror",
      "version": "1.0.0",
      "dependencies": {
        "@typescript-eslint/typescript-estree": "8.65.0"
      }
    },
    "node_modules/@typescript-eslint/project-service": {
      "version": "8.65.0",
      "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.65.0.tgz",
      "integrity": "sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==",
      "license": "MIT",
      "dependencies": {
        "@typescript-eslint/tsconfig-utils": "^8.65.0",
        "@typescript-eslint/types": "^8.65.0",
        "debug": "^4.4.3"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/typescript-eslint"
      },
      "peerDependencies": {
        "typescript": ">=4.8.4 <6.1.0"
      }
    },
    "node_modules/@typescript-eslint/tsconfig-utils": {
      "version": "8.65.0",
      "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz",
      "integrity": "sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==",
      "license": "MIT",
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/typescript-eslint"
      },
      "peerDependencies": {
        "typescript": ">=4.8.4 <6.1.0"
      }
    },
    "node_modules/@typescript-eslint/types": {
      "version": "8.65.0",
      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.65.0.tgz",
      "integrity": "sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==",
      "license": "MIT",
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/typescript-eslint"
      }
    },
    "node_modules/@typescript-eslint/typescript-estree": {
      "version": "8.65.0",
      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz",
      "integrity": "sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==",
      "license": "MIT",
      "dependencies": {
        "@typescript-eslint/project-service": "8.65.0",
        "@typescript-eslint/tsconfig-utils": "8.65.0",
        "@typescript-eslint/types": "8.65.0",
        "@typescript-eslint/visitor-keys": "8.65.0",
        "debug": "^4.4.3",
        "minimatch": "^10.2.2",
        "semver": "^7.7.3",
        "tinyglobby": "^0.2.15",
        "ts-api-utils": "^2.5.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/typescript-eslint"
      },
      "peerDependencies": {
        "typescript": ">=4.8.4 <6.1.0"
      }
    },
    "node_modules/@typescript-eslint/visitor-keys": {
      "version": "8.65.0",
      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz",
      "integrity": "sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==",
      "license": "MIT",
      "dependencies": {
        "@typescript-eslint/types": "8.65.0",
        "eslint-visitor-keys": "^5.0.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/typescript-eslint"
      }
    },
    "node_modules/balanced-match": {
      "version": "4.0.4",
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
      "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
      "license": "MIT",
      "engines": {
        "node": "18 || 20 || >=22"
      }
    },
    "node_modules/brace-expansion": {
      "version": "5.0.9",
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
      "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
      "license": "MIT",
      "dependencies": {
        "balanced-match": "^4.0.2"
      },
      "engines": {
        "node": "20 || >=22"
      }
    },
    "node_modules/debug": {
      "version": "4.4.3",
      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
      "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
      "license": "MIT",
      "dependencies": {
        "ms": "^2.1.3"
      },
      "engines": {
        "node": ">=6.0"
      },
      "peerDependenciesMeta": {
        "supports-color": {
          "optional": true
        }
      }
    },
    "node_modules/eslint-visitor-keys": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
      "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
      "license": "Apache-2.0",
      "engines": {
        "node": "^20.19.0 || ^22.13.0 || >=24"
      },
      "funding": {
        "url": "https://opencollective.com/eslint"
      }
    },
    "node_modules/fdir": {
      "version": "6.5.0",
      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
      "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
      "license": "MIT",
      "engines": {
        "node": ">=12.0.0"
      },
      "peerDependencies": {
        "picomatch": "^3 || ^4"
      },
      "peerDependenciesMeta": {
        "picomatch": {
          "optional": true
        }
      }
    },
    "node_modules/minimatch": {
      "version": "10.2.6",
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
      "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
      "license": "BlueOak-1.0.0",
      "dependencies": {
        "brace-expansion": "^5.0.8"
      },
      "engines": {
        "node": "18 || 20 || >=22"
      },
      "funding": {
        "url": "https://github.com/sponsors/isaacs"
      }
    },
    "node_modules/ms": {
      "version": "2.1.3",
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
      "license": "MIT"
    },
    "node_modules/picomatch": {
      "version": "4.0.7",
      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
      "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
      "license": "MIT",
      "engines": {
        "node": ">=12"
      },
      "funding": {
        "url": "https://github.com/sponsors/jonschlinkert"
      }
    },
    "node_modules/semver": {
      "version": "7.8.5",
      "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
      "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
      "license": "ISC",
      "bin": {
        "semver": "bin/semver.js"
      },
      "engines": {
        "node": ">=10"
      }
    },
    "node_modules/tinyglobby": {
      "version": "0.2.17",
      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
      "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
      "license": "MIT",
      "dependencies": {
        "fdir": "^6.5.0",
        "picomatch": "^4.0.4"
      },
      "engines": {
        "node": ">=12.0.0"
      },
      "funding": {
        "url": "https://github.com/sponsors/SuperchupuDev"
      }
    },
    "node_modules/ts-api-utils": {
      "version": "2.5.0",
      "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
      "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==",
      "license": "MIT",
      "engines": {
        "node": ">=18.12"
      },
      "peerDependencies": {
        "typescript": ">=4.8.4"
      }
    },
    "node_modules/typescript": {
      "version": "6.0.3",
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
      "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
      "license": "Apache-2.0",
      "peer": true,
      "bin": {
        "tsc": "bin/tsc",
        "tsserver": "bin/tsserver"
      },
      "engines": {
        "node": ">=14.17"
      }
    }
  }
}
package.json
{
  "name": "sample-typescript-estree-tserror",
  "version": "1.0.0",
  "private": true,
  "description": "verify @typescript-eslint/typescript-estree.TSError in pkg:npm/@typescript-eslint/typescript-estree@8.65.0",
  "dependencies": {
    "@typescript-eslint/typescript-estree": "8.65.0"
  }
}
spec.json
{
  "schemaVersion": 1,
  "goal": "verify @typescript-eslint/typescript-estree.TSError in pkg:npm/%40typescript-eslint/typescript-estree@8.65.0",
  "kind": "HOW",
  "packages": [
    "pkg:npm/%40typescript-eslint/typescript-estree@8.65.0"
  ],
  "symbols": [
    "@typescript-eslint/typescript-estree.TSError"
  ]
}
src/index.js
'use strict';

const { parse, TSError } = require('@typescript-eslint/typescript-estree');

/**
 * Determines whether a value is an instance of TSError.
 * @param {unknown} err
 * @returns {boolean}
 */
function isTSError(err) {
  return err instanceof TSError;
}

/**
 * Creates a TSError instance with given message, fileName, and location.
 * @param {string} message
 * @param {string} fileName
 * @param {{ start: { line: number, column: number, offset?: number }, end?: { line: number, column: number, offset?: number } }} location
 * @returns {TSError}
 */
function createTSError(message, fileName, location) {
  return new TSError(message, fileName, location);
}

/**
 * Attempts to parse TypeScript code and catches syntax errors.
 * @param {string} code
 * @param {object} [options]
 * @returns {{ success: true, ast: object } | { success: false, error: unknown }}
 */
function parseOrCatchTSError(code, options = {}) {
  try {
    const ast = parse(code, options);
    return { success: true, ast };
  } catch (error) {
    return { success: false, error };
  }
}

/**
 * Extracts line, column, and offset information from a TSError.
 * @param {TSError} err
 * @returns {{ name: string, message: string, fileName: string, lineNumber: number, column: number, index: number }}
 */
function extractErrorInfo(err) {
  if (!isTSError(err)) {
    throw new TypeError('Expected an instance of TSError');
  }
  return {
    name: err.name,
    message: err.message,
    fileName: err.fileName,
    lineNumber: err.lineNumber,
    column: err.column,
    index: err.index,
  };
}

module.exports = {
  TSError,
  isTSError,
  createTSError,
  parseOrCatchTSError,
  extractErrorInfo,
};
test/contract.cjs
'use strict';

const assert = require('node:assert/strict');
const { TSError, parse } = require('@typescript-eslint/typescript-estree');
const {
  isTSError,
  createTSError,
  parseOrCatchTSError,
  extractErrorInfo,
} = require('../src/index.js');

// 1. TSError is an Error subclass exported by @typescript-eslint/typescript-estree with name property TSError
assert.equal(typeof TSError, 'function', 'TSError must be a constructor function');
assert.ok(TSError.prototype instanceof Error, 'TSError must inherit from Error');

const dummyLocation = {
  start: { line: 10, column: 5, offset: 120 },
  end: { line: 10, column: 15, offset: 130 },
};
const manualErr = new TSError('Parsing failed', 'test-file.ts', dummyLocation);
assert.equal(manualErr.name, 'TSError', 'Error name property must be TSError');
assert.ok(manualErr instanceof Error, 'manualErr must be an instance of Error');
assert.ok(manualErr instanceof TSError, 'manualErr must be an instance of TSError');

// 2. TSError instances expose lineNumber, column, and index getters derived from location.start
assert.equal(manualErr.lineNumber, 10, 'lineNumber getter must return location.start.line');
assert.equal(manualErr.column, 5, 'column getter must return location.start.column');
assert.equal(manualErr.index, 120, 'index getter must return location.start.offset');
assert.equal(manualErr.fileName, 'test-file.ts', 'fileName must match provided fileName');
assert.equal(manualErr.message, 'Parsing failed', 'message must match provided message');
assert.deepEqual(manualErr.location, dummyLocation, 'location must match provided location');

const extracted = extractErrorInfo(manualErr);
assert.deepEqual(extracted, {
  name: 'TSError',
  message: 'Parsing failed',
  fileName: 'test-file.ts',
  lineNumber: 10,
  column: 5,
  index: 120,
});

// 3. TSError can be instantiated directly with message, fileName, and location
const loc2 = { start: { line: 1, column: 0, offset: 0 } };
const helperErr = createTSError('Helper message', 'sample.ts', loc2);
assert.ok(helperErr instanceof TSError, 'createTSError must produce TSError');
assert.equal(helperErr.message, 'Helper message');
assert.equal(helperErr.fileName, 'sample.ts');
assert.equal(helperErr.lineNumber, 1);
assert.equal(helperErr.column, 0);
assert.equal(helperErr.index, 0);

// 4. parse throws a TSError containing line, column, and index positions when given invalid TypeScript syntax
const invalidTs = 'const num: number = ;';
let thrown = null;
try {
  parse(invalidTs, { filePath: 'invalid.ts' });
} catch (e) {
  thrown = e;
}

assert.ok(thrown !== null, 'parse must throw on invalid syntax');
assert.ok(thrown instanceof TSError, 'thrown error must be an instance of TSError');
assert.equal(thrown.name, 'TSError');
assert.ok(typeof thrown.message === 'string' && thrown.message.length > 0);
assert.ok(typeof thrown.fileName === 'string' && thrown.fileName.endsWith('invalid.ts'));
assert.equal(thrown.lineNumber, 1);
assert.equal(thrown.column, 20);
assert.equal(thrown.index, 20);
assert.ok(thrown.location && thrown.location.start);

const resultFail = parseOrCatchTSError('type Foo = = ;');
assert.equal(resultFail.success, false);
assert.ok(resultFail.error instanceof TSError);
assert.equal(resultFail.error.name, 'TSError');

const resultSuccess = parseOrCatchTSError('const valid: number = 42;');
assert.equal(resultSuccess.success, true);
assert.equal(resultSuccess.ast.type, 'Program');

// 5. isTSError identifies TSError instances and rejects standard Error or non-error values
assert.equal(isTSError(manualErr), true, 'isTSError must return true for new TSError');
assert.equal(isTSError(thrown), true, 'isTSError must return true for thrown parser TSError');
assert.equal(isTSError(resultFail.error), true, 'isTSError must return true for caught TSError');
assert.equal(isTSError(new Error('generic error')), false, 'isTSError must return false for standard Error');
assert.equal(isTSError(new TypeError('type error')), false, 'isTSError must return false for TypeError');
assert.equal(isTSError(null), false, 'isTSError must return false for null');
assert.equal(isTSError(undefined), false, 'isTSError must return false for undefined');
assert.equal(isTSError({ name: 'TSError' }), false, 'isTSError must return false for plain object');

console.log('Contract test passed successfully.');

Origin Seeder

anonymous