|
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
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> |
||
|---|---|---|
| .. | ||
| .github | ||
| test | ||
| .nycrc | ||
| CHANGELOG.md | ||
| eslint.config.mjs | ||
| Get.d.ts | ||
| Get.js | ||
| GetMethod.d.ts | ||
| GetMethod.js | ||
| GetV.d.ts | ||
| GetV.js | ||
| isPropertyKey.d.ts | ||
| isPropertyKey.js | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
es-abstract-get 
The ECMAScript “getting properties” abstract operations — Get, GetV, and GetMethod — plus the isPropertyKey helper they share, with TypeScript types.
Motivation
These operations are also available in 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 they’re 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
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
