1.0.0-beta.1
Composite keys, TC39 proposal-richer-keys of compositeKey implementation
Attributes
Includes Deno configuration
Repository
Current version released
a year ago
Dependencies
deno.land/x
Versions
composite-key
Composite keys, TC39 proposal-richer-keys, compositeKey implementation.
Entrypoint
This project provides ponyfill and polyfill.
Polyfill has a side effect, so the endpoint is isolated.
The entrypoint of each are as follows:
Type | Entrypoint |
---|---|
Ponyfill | mod.ts |
Polyfill | polyfill.ts |
compositeKey
compositeKey
requires at least one component must be object that can be placed
in a WeakMap
.
import { compositeKey } from "https://deno.land/x/composite_key@$VERSION/mod.ts";
import {
assertEquals,
assertNotEquals,
} from "https://deno.land/std/testing/asserts.ts";
declare const fn: (a: number, b: number) => number;
assertEquals(compositeKey(fn, 0, 1), compositeKey(fn, 0, 1));
assertNotEquals(compositeKey(fn, 1, 0), compositeKey(fn, 0, 1));
// @ts-expect-error it require one of more object.
compositeKey(0, 1);
compositeSymbol
Return Symbol
consisting of a component. This allows strongly attaching data
to an object that is associated with a group of values.
import { compositeSymbol } from "https://deno.land/x/composite_key@$VERSION/mod.ts";
import {
assertEquals,
assertNotEquals,
} from "https://deno.land/std/testing/asserts.ts";
declare const object: object;
assertEquals(compositeSymbol(0, 1), compositeSymbol(0, 1));
assertEquals(compositeSymbol(0, object), compositeSymbol(0, object));
assertNotEquals(compositeSymbol(0), compositeSymbol(1));
assertNotEquals(compositeSymbol(0, {}), compositeSymbol(0, {}));
Polyfill
Polyfill affects the global object. You must be very careful when using it.
import "https://deno.land/x/composite_key@$VERSION/polyfill.ts";
import { assert } from "https://deno.land/std/testing/asserts.ts";
assert(compositeKey);
assert(compositeSymbol);
API
See deno doc for all APIs.
License
Copyright © 2023-present Tomoki Miyauchi.
Released under the MIT license