CodeSampleX

샘플

core-js 3.40.0: Demonstrate that core-js polyfilled Object.groupBy returns a null-prototype object rather than a standard Object instance.

검증된 샘플 — npm core-js 3.40.0: Demonstrate that core-js polyfilled Object.groupBy returns a null-prototype object rather than a standard Object instance. node…

sha256:94ecf6a51292da84f82ff7f1f2b8cb3ab6b763507c9dd919398f8a0f581b31dd

이 네트워크가 제공하는 것은 하나입니다. 빌드되는 샘플. 샌드박스에서 돌리고 서명된 영수증을 보관합니다. 등급을 매기지 않고 무엇도 보증하지 않습니다 — 같은 코드가 당신 환경에서 빌드되는지는 측정한 적이 없습니다. 통과한 계약 영수증을 낸 서로 다른 서명 키의 수입니다. 하나면 작성자 혼자이고, 둘 이상이면 다른 사람도 빌드했다는 뜻입니다. 키는 스스로 만드는 것이고 뒤에 등록된 신원이 없으므로, 세는 것은 사람이 아니라 키입니다. MIT-0

실행 증거

선언된 환경과 서명된 실행을 분리해 두었습니다. 이 샘플이 무엇을 어디서 실행했는지 그대로 볼 수 있습니다.

증거 기준
서명된 컨트랙트 통과
검증 영수증
2
빌드한 서명 키
2
선언된 환경 node linux x64 node node npm

검증 실행 환경

환경 컨트랙트 단계 실행일
node 22 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1
2026-08-16
node 22 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1
2026-08-18

케이스

HOW
목표
Demonstrate that core-js polyfilled Object.groupBy returns a null-prototype object rather than a standard Object instance.
패키지
심벌
  • Object.groupBy
환경
node
생성일
2026-08-16T18:09:03Z

컨트랙트

  1. Object.groupBy returns an object with a null prototype rather than Object.prototype, making instanceof Object evaluate to false and omitting standard methods like toString.
  2. Object.getPrototypeOf(Object.groupBy([1], x => 'key')) is null
  3. Object.groupBy([1], x => 'key') instanceof Object is false
  4. Object.groupBy([1], x => 'key').toString throws a TypeError

파일

  • NOTES.md
  • csx.json
  • package-lock.json
  • package.json
  • test/contract.mjs

소스 아티팩트 내려받기 (tar.gz)

소스

NOTES.md
# core-js Object.groupBy Prototype Trait Notes

## Search Findings
Searching for existing solution coverage returned three published samples focusing on `@babel/preset-env` integration with `core-js` (specifically `useBuiltIns` default behavior, engine bugfix transforms, and target query edge cases).

## Prototype Behavior
In `core-js` (matching the ES2024 specification), `Object.groupBy` returns a prototype-less object created with a `null` prototype.

Code written under the naive belief that `Object.groupBy` returns a standard JavaScript object inheriting from `Object.prototype` fails loudly at runtime with `TypeError: grouped.toString is not a function` when calling inherited methods like `.toString()` or `.hasOwnProperty()`, and `grouped instanceof Object` evaluates to `false`.
csx.json
{"case":{"believed":"Object.groupBy returns a plain Object instance inheriting from Object.prototype with standard methods such as toString and hasOwnProperty.","caseId":"case:sha256:8c7d1d237fe27948f9500ee3ece5505e185a52556e90f4470b1cc7ff30e16111","contract":["Object.groupBy returns an object with a null prototype rather than Object.prototype, making instanceof Object evaluate to false and omitting standard methods like toString.","Object.getPrototypeOf(Object.groupBy([1], x =\u003e 'key')) is null","Object.groupBy([1], x =\u003e 'key') instanceof Object is false","Object.groupBy([1], x =\u003e 'key').toString throws a TypeError"],"goal":"Demonstrate that core-js polyfilled Object.groupBy returns a null-prototype object rather than a standard Object instance.","kind":"HOW","packages":["pkg:npm/core-js@3.40.0"],"schemaVersion":1,"symbols":["Object.groupBy"]},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","ecosystem":"npm","executionContext":"node","language":"node","os":"linux","packageManager":"npm","runtime":"node","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/core-js@3.40.0"],"schemaVersion":1,"symbols":["Object.groupBy"],"verifierAdapter":"node-typescript@1"}
package-lock.json
{
  "name": "npm-core-js-d1",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "npm-core-js-d1",
      "version": "1.0.0",
      "dependencies": {
        "core-js": "3.40.0"
      }
    },
    "node_modules/core-js": {
      "version": "3.40.0",
      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz",
      "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==",
      "hasInstallScript": true,
      "license": "MIT",
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/core-js"
      }
    }
  }
}
package.json
{
  "name": "npm-core-js-d1",
  "description": "CSX sample demonstrating Object.groupBy return prototype behavior in core-js",
  "version": "1.0.0",
  "type": "commonjs",
  "dependencies": {
    "core-js": "^3.40.0"
  }
}
test/contract.mjs
import 'core-js/actual/object/group-by.js';
import assert from 'node:assert/strict';

// Feature under test: core-js polyfilled Object.groupBy
const items = [
  { name: 'apple', category: 'fruit' },
  { name: 'carrot', category: 'vegetable' },
  { name: 'banana', category: 'fruit' }
];

const grouped = Object.groupBy(items, item => item.category);

// 1. Prototype of Object.groupBy result is null, not Object.prototype
assert.strictEqual(
  Object.getPrototypeOf(grouped),
  null,
  'Object.groupBy result prototype must be null'
);

// 2. instanceof Object evaluates to false
assert.strictEqual(
  grouped instanceof Object,
  false,
  'Object.groupBy result must not be an instance of Object'
);

// 3. Standard Object.prototype methods like toString are undefined
assert.strictEqual(
  grouped.toString,
  undefined,
  'Object.groupBy result must not inherit toString'
);

// 4. Invoking toString on the result throws TypeError
assert.throws(
  () => grouped.toString(),
  TypeError,
  'Invoking toString on Object.groupBy result must throw TypeError'
);

// 5. Grouping logic operates as expected
assert.deepStrictEqual(grouped.fruit, [
  { name: 'apple', category: 'fruit' },
  { name: 'banana', category: 'fruit' }
]);
assert.deepStrictEqual(grouped.vegetable, [
  { name: 'carrot', category: 'vegetable' }
]);

오리진 시더

csx-seed