Skip to content

Commit 77919a5

Browse files
WeakMap docstrings (#7985)
* WeakMap docstrings * MDN links
1 parent 3d993e2 commit 77919a5

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

packages/@rescript/runtime/Stdlib_WeakMap.res

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,92 @@
1+
/***
2+
Bindings to JavaScript's `WeakMap`.
3+
4+
Weak maps keep key/value pairs where keys must be objects and the references do not prevent garbage collection.
5+
*/
6+
7+
/** Mutable weak map storing values of type `'v` with object keys `'k`. */
18
@notUndefined
29
type t<'k, 'v>
310

11+
/**
12+
Creates an empty weak map.
13+
14+
See [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) on MDN.
15+
16+
## Examples
17+
18+
```rescript
19+
let cache = Stdlib_WeakMap.make()
20+
Stdlib_WeakMap.get(cache, Stdlib_Object.make()) == None
21+
```
22+
*/
423
@new external make: unit => t<'k, 'v> = "WeakMap"
524

25+
/**
26+
`get(map, key)` returns `Some(value)` when `key` exists, otherwise `None`.
27+
28+
See [`WeakMap.prototype.get`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get) on MDN.
29+
30+
## Examples
31+
32+
```rescript
33+
let cache = Stdlib_WeakMap.make()
34+
let key = Stdlib_Object.make()
35+
Stdlib_WeakMap.get(cache, key) == None
36+
let _ = Stdlib_WeakMap.set(cache, key, "user")
37+
Stdlib_WeakMap.get(cache, key) == Some("user")
38+
```
39+
*/
640
@send external get: (t<'k, 'v>, 'k) => option<'v> = "get"
41+
42+
/**
43+
`has(map, key)` checks whether `key` exists in the weak map.
44+
45+
See [`WeakMap.prototype.has`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has) on MDN.
46+
47+
## Examples
48+
49+
```rescript
50+
let cache = Stdlib_WeakMap.make()
51+
let key = Stdlib_Object.make()
52+
Stdlib_WeakMap.has(cache, key) == false
53+
let _ = Stdlib_WeakMap.set(cache, key, ())
54+
Stdlib_WeakMap.has(cache, key) == true
55+
```
56+
*/
757
@send external has: (t<'k, 'v>, 'k) => bool = "has"
58+
59+
/**
60+
`set(map, key, value)` stores `value` for `key` and returns the map for chaining.
61+
62+
See [`WeakMap.prototype.set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set) on MDN.
63+
64+
## Examples
65+
66+
```rescript
67+
let cache = Stdlib_WeakMap.make()
68+
let key = Stdlib_Object.make()
69+
let _ = Stdlib_WeakMap.set(cache, key, 42)
70+
Stdlib_WeakMap.get(cache, key) == Some(42)
71+
```
72+
*/
873
@send external set: (t<'k, 'v>, 'k, 'v) => t<'k, 'v> = "set"
74+
75+
/**
76+
`delete(map, key)` removes `key` and returns `true` if an entry existed.
77+
78+
See [`WeakMap.prototype.delete`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete) on MDN.
79+
80+
## Examples
81+
82+
```rescript
83+
let cache = Stdlib_WeakMap.make()
84+
let key = Stdlib_Object.make()
85+
Stdlib_WeakMap.delete(cache, key) == false
86+
let _ = Stdlib_WeakMap.set(cache, key, 1)
87+
Stdlib_WeakMap.delete(cache, key) == true
88+
```
89+
*/
990
@send external delete: (t<'k, 'v>, 'k) => bool = "delete"
1091

1192
/**

0 commit comments

Comments
 (0)