hatch-surf/node_modules/es-abstract-get/README.md
Riley Zhang df378d33ef
Some checks failed
CI / go (push) Waiting to run
CI / docker (push) Waiting to run
CI / lint-go (push) Waiting to run
CI / lint-docs (push) Waiting to run
CI / check-paperclip (push) Waiting to run
Deploy static site / Deploy to GitHub Pages (push) Has been cancelled
Deploy static site / Deploy via Docker to hatch.surf (push) Has been cancelled
Merge GitHub main into Gitea repo (allow unrelated histories)
Resolved conflicts by taking GitHub versions for:
- .dockerignore, .gitignore, Dockerfile, README.md, docker-compose.yml

Kept deploy.sh updated to:
- Pull from GitHub (primary source)
- Push to Gitea (push-mirror)
- Build from site/ directory (GitHub structure)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-25 05:20:46 +02:00

68 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# es-abstract-get <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
[![github actions][actions-image]][actions-url]
[![coverage][codecov-image]][codecov-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]
[![npm badge][npm-badge-png]][package-url]
The ECMAScript “getting properties” abstract operations — [`Get`][Get], [`GetV`][GetV], and [`GetMethod`][GetMethod] — plus the [`isPropertyKey`][isPropertyKey] helper they share, with TypeScript types.
## Motivation
These operations are also available in [`es-abstract`][es-abstract],
but `es-abstract` ships every abstract operation for every spec edition,
so depending on it to use one or two of them pulls in a very large dependency graph.
These three operations (and `isPropertyKey`) historically never differ between spec editions,
so theyre split out here:
a package that only needs `Get`, `GetV`, `GetMethod`, or `isPropertyKey` can depend on this instead and get a far smaller install.
Each operation is its own entry point - there is intentionally no main (`.`) export - so you only pay for what you import.
## Example
```js
var Get = require('es-abstract-get/Get');
var GetV = require('es-abstract-get/GetV');
var GetMethod = require('es-abstract-get/GetMethod');
var isPropertyKey = require('es-abstract-get/isPropertyKey');
var assert = require('assert');
// Get(O, P): O must be an Object
assert.equal(Get({ a: 1 }, 'a'), 1);
// GetV(V, P): V may be a primitive (it is coerced to an object for the lookup,
// but the original value is the receiver)
assert.equal(GetV('abc', 'length'), 3);
// GetMethod(O, P): returns undefined for null/undefined, throws if not callable
assert.equal(GetMethod({}, 'toString'), Object.prototype.toString);
assert.equal(GetMethod({ a: null }, 'a'), undefined);
// isPropertyKey(argument): true for strings and symbols
assert.equal(isPropertyKey('a'), true);
assert.equal(isPropertyKey(Symbol.iterator), true);
assert.equal(isPropertyKey(1), false);
```
## Tests
Simply clone the repo, `npm install`, and run `npm test`
[package-url]: https://npmjs.org/package/es-abstract-get
[npm-version-svg]: https://versionbadg.es/ljharb/es-abstract-get.svg
[npm-badge-png]: https://nodei.co/npm/es-abstract-get.png?downloads=true&stars=true
[license-image]: https://img.shields.io/npm/l/es-abstract-get.svg
[license-url]: LICENSE
[downloads-image]: https://img.shields.io/npm/dm/es-abstract-get.svg
[downloads-url]: https://npm-stat.com/charts.html?package=es-abstract-get
[codecov-image]: https://codecov.io/gh/ljharb/es-abstract-get/branch/main/graphs/badge.svg
[codecov-url]: https://app.codecov.io/gh/ljharb/es-abstract-get/
[actions-image]: https://img.shields.io/github/check-runs/ljharb/es-abstract-get/main
[actions-url]: https://github.com/ljharb/es-abstract-get/actions
[es-abstract]: https://npmjs.org/package/es-abstract
[Get]: https://tc39.es/ecma262/#sec-get-o-p
[GetV]: https://tc39.es/ecma262/#sec-getv
[GetMethod]: https://tc39.es/ecma262/#sec-getmethod
[isPropertyKey]: https://tc39.es/ecma262/#sec-ispropertykey