Sample
has-property-descriptors 1.0.2
Verified sample for npm has-property-descriptors 1.0.2. The contract ran on node 22 · linux alpine/x64 · docker and passed: hasPropertyDescriptors returns…
sha256:07038a7ed6d164edc9e66ef3137c20f3d589538813d92c332ba5de86e75383f2
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
Verification-run environments
| Environment | Contract | Stages | Run |
|---|---|---|---|
| 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-27 |
Case
HOW- Goal
- verify pkg:npm/has-property-descriptors@1.0.2
- Packages
- Environment
- node 22.23.2
- Created
- 2026-08-27T17:36:11Z
Contract
- hasPropertyDescriptors returns true when Object.defineProperty is supported in the JavaScript environment
- hasPropertyDescriptors.hasArrayLengthDefineBug returns false in modern Node.js where array length definition is supported without bugs
- defineSafeProperty defines non-writable and non-enumerable properties using property descriptors when supported
Files
- PROMPT.md
- csx.json
- index.cjs
- package-lock.json
- package.json
- spec.json
- test/contract.cjs
Source
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 pkg:npm/has-property-descriptors@1.0.2
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:npm/has-property-descriptors@1.0.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:df993cc100679d030c0611a99afdd835be899e1313315a0ab250231527384c77","contract":["hasPropertyDescriptors returns true when Object.defineProperty is supported in the JavaScript environment","hasPropertyDescriptors.hasArrayLengthDefineBug returns false in modern Node.js where array length definition is supported without bugs","defineSafeProperty defines non-writable and non-enumerable properties using property descriptors when supported"],"goal":"verify pkg:npm/has-property-descriptors@1.0.2","kind":"HOW","packages":["pkg:npm/has-property-descriptors@1.0.2"],"schemaVersion":1},"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","runtime":"node","runtimeVersion":"22.23.2","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/has-property-descriptors@1.0.2"],"schemaVersion":1,"subject":"pkg:npm/has-property-descriptors@1.0.2","verifierAdapter":"node-typescript@1"}
'use strict';
const hasPropertyDescriptors = require('has-property-descriptors');
/**
* Checks if the current runtime environment supports property descriptors.
* @returns {boolean} True if Object.defineProperty is supported.
*/
function supportsPropertyDescriptors() {
return hasPropertyDescriptors();
}
/**
* Checks if the environment has the array length define bug.
* @returns {boolean|null} False in modern environments, true if bug is present, null if defineProperty is absent.
*/
function checkArrayLengthBug() {
return hasPropertyDescriptors.hasArrayLengthDefineBug();
}
/**
* Defines a property on an object if supported.
* @param {Object} obj Target object.
* @param {string|symbol} prop Property key.
* @param {Object} descriptor Property descriptor.
* @returns {boolean} True if defined using descriptors, false otherwise.
*/
function defineSafeProperty(obj, prop, descriptor) {
if (hasPropertyDescriptors()) {
Object.defineProperty(obj, prop, descriptor);
return true;
}
obj[prop] = descriptor.value;
return false;
}
module.exports = {
hasPropertyDescriptors,
supportsPropertyDescriptors,
checkArrayLengthBug,
defineSafeProperty
};
{
"name": "sample-has-property-descriptors",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sample-has-property-descriptors",
"version": "1.0.0",
"dependencies": {
"has-property-descriptors": "1.0.2"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/has-property-descriptors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
}
}
}
{
"name": "sample-has-property-descriptors",
"version": "1.0.0",
"private": true,
"description": "Clean-room verification of has-property-descriptors",
"dependencies": {
"has-property-descriptors": "1.0.2"
}
}
{
"schemaVersion": 1,
"goal": "verify pkg:npm/has-property-descriptors@1.0.2",
"kind": "HOW",
"packages": [
"pkg:npm/has-property-descriptors@1.0.2"
]
}
'use strict';
const assert = require('node:assert/strict');
const hasPropertyDescriptors = require('has-property-descriptors');
const {
supportsPropertyDescriptors,
checkArrayLengthBug,
defineSafeProperty
} = require('../index.cjs');
assert.equal(typeof hasPropertyDescriptors, 'function', 'has-property-descriptors must export a function');
assert.equal(typeof hasPropertyDescriptors.hasArrayLengthDefineBug, 'function', 'hasArrayLengthDefineBug must be a function');
const supported = supportsPropertyDescriptors();
assert.equal(typeof supported, 'boolean', 'supportsPropertyDescriptors must return a boolean');
assert.equal(supported, true, 'hasPropertyDescriptors must return true in Node.js');
const hasBug = checkArrayLengthBug();
assert.equal(typeof hasBug, 'boolean', 'checkArrayLengthBug must return a boolean in Node.js');
assert.equal(hasBug, false, 'hasArrayLengthDefineBug must return false in modern Node.js');
const target = {};
const defined = defineSafeProperty(target, 'testProp', {
value: 42,
writable: false,
enumerable: false,
configurable: true
});
assert.equal(defined, true, 'defineSafeProperty must return true when descriptors are supported');
assert.equal(target.testProp, 42, 'target property value must match descriptor value');
const desc = Object.getOwnPropertyDescriptor(target, 'testProp');
assert.ok(desc, 'property descriptor must exist');
assert.equal(desc.value, 42, 'descriptor value must be 42');
assert.equal(desc.writable, false, 'descriptor writable must be false');
assert.equal(desc.enumerable, false, 'descriptor enumerable must be false');
assert.equal(desc.configurable, true, 'descriptor configurable must be true');
// Verify non-writable behavior in strict mode
assert.throws(() => {
'use strict';
target.testProp = 99;
}, TypeError, 'modifying a non-writable property in strict mode must throw TypeError');
console.log('Contract test passed.');
Origin Seeder
anonymous