샘플
has-symbols 1.1.0: hasNativeSymbols, hasSymbols
검증된 샘플 — npm has-symbols 1.1.0: hasNativeSymbols, hasSymbols. node 22 · linux alpine/x64 · docker에서 contract를 실행해 통과했습니다: hasNativeSymbols() returns true in…
sha256:335a6888833cc5b1c69510a9b3f0ad1b28ab0a11f7ad15641e47e61ca669612b
이 네트워크가 제공하는 것은 하나입니다. 빌드되는 샘플. 샌드박스에서 돌리고 서명된 영수증을 보관합니다. 등급을 매기지 않고 무엇도 보증하지 않습니다 — 같은 코드가 당신 환경에서 빌드되는지는 측정한 적이 없습니다.
통과한 계약 영수증을 낸 서로 다른 서명 키의 수입니다. 하나면 작성자 혼자이고, 둘 이상이면 다른 사람도 빌드했다는 뜻입니다. 키는 스스로 만드는 것이고 뒤에 등록된 신원이 없으므로, 세는 것은 사람이 아니라 키입니다.
MIT-0
실행 증거
선언된 환경과 서명된 실행을 분리해 두었습니다. 이 샘플이 무엇을 어디서 실행했는지 그대로 볼 수 있습니다.
- 증거 기준
- 서명된 컨트랙트 통과
- 검증 영수증
- 1
- 빌드한 서명 키
- 1
선언된 환경
windows 11 x64 npm
검증 실행 환경
| 환경 | 컨트랙트 | 단계 | 실행일 |
|---|---|---|---|
| node 22 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · node-typescript@1 |
2026-08-19 |
케이스
HOW- 목표
- verify pkg:npm/has-symbols@1.1.0
- 심벌
-
- hasNativeSymbols
- hasSymbols
- 생성일
- 2026-08-18T17:57:24Z
컨트랙트
- hasNativeSymbols() returns true in modern JavaScript runtimes with native Symbol support
- hasSymbols() from has-symbols/shams.js returns true when Symbol and Object.getOwnPropertySymbols are supported
- native symbols created with Symbol() produce distinct symbol primitives non-enumerable in Object.keys
- Object.getOwnPropertySymbols retrieves symbol properties assigned to objects
- wrapper functions checkNativeSymbols and checkSymbolsOrShams match direct library calls
파일
- PROMPT.md
- csx.json
- index.mjs
- package-lock.json
- package.json
- spec.json
- test/contract.mjs
소스
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-symbols@1.1.0
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:npm/has-symbols@1.1.0
Demonstrate these symbols/APIs:
- hasNativeSymbols
- hasSymbols
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:1d7aeeae14d2d313ec4165ca97c8dd9bcd89bbd3e57e64a7f5e1ef19fc8d8e5a","contract":["hasNativeSymbols() returns true in modern JavaScript runtimes with native Symbol support","hasSymbols() from has-symbols/shams.js returns true when Symbol and Object.getOwnPropertySymbols are supported","native symbols created with Symbol() produce distinct symbol primitives non-enumerable in Object.keys","Object.getOwnPropertySymbols retrieves symbol properties assigned to objects","wrapper functions checkNativeSymbols and checkSymbolsOrShams match direct library calls"],"goal":"verify pkg:npm/has-symbols@1.1.0","kind":"HOW","packages":["pkg:npm/has-symbols@1.1.0"],"schemaVersion":1,"symbols":["hasNativeSymbols","hasSymbols"]},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","ecosystem":"npm","os":"windows","osVersionBucket":"11","packageManager":"npm","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/has-symbols@1.1.0"],"schemaVersion":1,"symbols":["hasNativeSymbols","hasSymbols"],"verifierAdapter":"node-typescript@1"}
import hasNativeSymbols from 'has-symbols';
import hasSymbolsShams from 'has-symbols/shams.js';
/**
* Checks whether the current JavaScript environment has native Symbol support.
* @returns {boolean}
*/
export function checkNativeSymbols() {
return hasNativeSymbols();
}
/**
* Checks whether the current JavaScript environment supports Symbols (either native or shams).
* @returns {boolean}
*/
export function checkSymbolsOrShams() {
return hasSymbolsShams();
}
{
"name": "sample",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sample",
"version": "1.0.0",
"dependencies": {
"has-symbols": "1.1.0"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
}
}
}
{
"name": "sample",
"version": "1.0.0",
"type": "module",
"dependencies": {
"has-symbols": "1.1.0"
}
}
{
"schemaVersion": 1,
"goal": "verify pkg:npm/has-symbols@1.1.0",
"kind": "HOW",
"packages": [
"pkg:npm/has-symbols@1.1.0"
],
"symbols": [
"hasNativeSymbols",
"hasSymbols"
]
}
import assert from 'node:assert/strict';
import hasNativeSymbols from 'has-symbols';
import hasSymbolsShams from 'has-symbols/shams.js';
import { checkNativeSymbols, checkSymbolsOrShams } from '../index.mjs';
// Case 1: hasNativeSymbols returns boolean
{
const result = hasNativeSymbols();
assert.equal(typeof result, 'boolean', 'hasNativeSymbols() must return a boolean');
assert.equal(result, true, 'hasNativeSymbols() should return true in Node.js environment');
}
// Case 2: hasSymbolsShams returns boolean
{
const result = hasSymbolsShams();
assert.equal(typeof result, 'boolean', 'hasSymbolsShams() must return a boolean');
assert.equal(result, true, 'hasSymbolsShams() should return true in Node.js environment');
}
// Case 3: native symbol characteristics validated when supported
{
if (hasNativeSymbols()) {
const sym1 = Symbol('test');
const sym2 = Symbol('test');
assert.equal(typeof sym1, 'symbol', 'typeof Symbol() must be "symbol"');
assert.notEqual(sym1, sym2, 'distinct symbols with same description must not be equal');
assert.equal(typeof Symbol.iterator, 'symbol', 'Symbol.iterator must be a symbol');
}
}
// Case 4: symbol property isolation on objects
{
if (hasSymbolsShams()) {
const symKey = Symbol('contract_key');
const targetObj = { standardKey: 'visible' };
targetObj[symKey] = 'symbol_value';
// Standard reflection ignores symbol keys
assert.deepEqual(Object.keys(targetObj), ['standardKey'], 'Object.keys should exclude symbol keys');
// Symbol reflection retrieves symbol keys
const symbols = Object.getOwnPropertySymbols(targetObj);
assert.equal(symbols.length, 1, 'Object.getOwnPropertySymbols should find 1 symbol key');
assert.equal(symbols[0], symKey, 'retrieved symbol must match assigned symbol');
assert.equal(targetObj[symbols[0]], 'symbol_value', 'value via symbol key must match');
}
}
// Case 5: wrapper functions in index.mjs match direct library exports
{
assert.equal(checkNativeSymbols(), hasNativeSymbols(), 'checkNativeSymbols should match hasNativeSymbols()');
assert.equal(checkSymbolsOrShams(), hasSymbolsShams(), 'checkSymbolsOrShams should match hasSymbolsShams()');
}
console.log('PASS: all has-symbols contract assertions passed');
오리진 시더
익명