@lincode/events 1.0.30 → 1.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Events.js +1 -1
- package/lib/index.js +4 -0
- package/lib-commonjs/Events.js +1 -1
- package/lib-commonjs/index.js +4 -0
- package/package.json +5 -4
- package/src/Events.ts +25 -22
- package/src/event.ts +5 -5
- package/src/index.ts +5 -0
package/lib/Events.js
CHANGED
package/lib/index.js
CHANGED
package/lib-commonjs/Events.js
CHANGED
package/lib-commonjs/index.js
CHANGED
|
@@ -7,3 +7,7 @@ Object.defineProperty(exports, "Events", { enumerable: true, get: function () {
|
|
|
7
7
|
var event_1 = require("./event");
|
|
8
8
|
Object.defineProperty(exports, "event", { enumerable: true, get: function () { return event_1.default; } });
|
|
9
9
|
Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return event_1.Event; } });
|
|
10
|
+
const w = window;
|
|
11
|
+
"__LINCODE_EVENTS__" in w &&
|
|
12
|
+
console.warn("multiple versions of @lincode/events detected");
|
|
13
|
+
w.__LINCODE_EVENTS__ = true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lincode/events",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.32",
|
|
4
4
|
"description": "Generated by ambients-cli",
|
|
5
5
|
"author": "Lai Schwe",
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"ambients"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@lincode/promiselikes": "^1.0.
|
|
12
|
-
"@lincode/utils": "^1.3.
|
|
11
|
+
"@lincode/promiselikes": "^1.0.25",
|
|
12
|
+
"@lincode/utils": "^1.3.7"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"typescript": "^4.9.4"
|
|
@@ -28,5 +28,6 @@
|
|
|
28
28
|
"tabWidth": 4,
|
|
29
29
|
"semi": false,
|
|
30
30
|
"singleQuote": false
|
|
31
|
-
}
|
|
31
|
+
},
|
|
32
|
+
"sideEffects": false
|
|
32
33
|
}
|
package/src/Events.ts
CHANGED
|
@@ -1,63 +1,66 @@
|
|
|
1
1
|
import { Cancellable } from "@lincode/promiselikes"
|
|
2
2
|
import { forceGet } from "@lincode/utils"
|
|
3
3
|
|
|
4
|
-
export default class
|
|
4
|
+
export default class<Payload = void, Names extends string = string> {
|
|
5
5
|
private cbsMap = new Map<string, Set<(val: Payload) => void>>()
|
|
6
6
|
private states?: Map<string, Payload>
|
|
7
7
|
|
|
8
|
-
public on(name: Names | Array<Names>, cb: (val: Payload) => void)
|
|
8
|
+
public on(name: Names | Array<Names>, cb: (val: Payload) => void) {
|
|
9
9
|
if (Array.isArray(name)) {
|
|
10
10
|
const handle = new Cancellable()
|
|
11
|
-
for (const n of name)
|
|
12
|
-
handle.watch(this.on(n, cb))
|
|
11
|
+
for (const n of name) handle.watch(this.on(n, cb))
|
|
13
12
|
|
|
14
13
|
return handle
|
|
15
14
|
}
|
|
16
|
-
if (this.states?.has(name))
|
|
17
|
-
|
|
15
|
+
if (this.states?.has(name)) cb(this.states.get(name)!)
|
|
16
|
+
|
|
17
|
+
const cbs = forceGet(
|
|
18
|
+
this.cbsMap,
|
|
19
|
+
name,
|
|
20
|
+
() => new Set<(val: Payload) => void>()
|
|
21
|
+
)
|
|
18
22
|
|
|
19
|
-
const cbs = forceGet(this.cbsMap, name, () => new Set<(val: Payload) => void>())
|
|
20
|
-
|
|
21
23
|
cbs.add(cb)
|
|
22
24
|
return new Cancellable(() => cbs.delete(cb))
|
|
23
25
|
}
|
|
24
|
-
|
|
25
|
-
public once(name: Names | Array<Names>, cb: (val: Payload) => void)
|
|
26
|
+
|
|
27
|
+
public once(name: Names | Array<Names>, cb: (val: Payload) => void) {
|
|
26
28
|
const handle = new Cancellable()
|
|
27
|
-
handle.watch(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
handle.watch(
|
|
30
|
+
this.on(name, (value) => {
|
|
31
|
+
handle.cancel()
|
|
32
|
+
cb(value)
|
|
33
|
+
})
|
|
34
|
+
)
|
|
31
35
|
return handle
|
|
32
36
|
}
|
|
33
37
|
|
|
34
|
-
public emit(name: Names, value: Payload)
|
|
38
|
+
public emit(name: Names, value: Payload) {
|
|
35
39
|
if (this.cbsMap.has(name))
|
|
36
|
-
for (const cb of this.cbsMap.get(name)!)
|
|
37
|
-
cb(value)
|
|
40
|
+
for (const cb of this.cbsMap.get(name)!) cb(value)
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
public hasState(name: Names): boolean {
|
|
41
44
|
return !!this.states?.has(name)
|
|
42
45
|
}
|
|
43
46
|
|
|
44
|
-
public setState(name: Names, value: Payload)
|
|
47
|
+
public setState(name: Names, value: Payload) {
|
|
45
48
|
this.states ??= new Map()
|
|
46
49
|
if (this.states.has(name) && this.states.get(name) === value) return
|
|
47
50
|
this.states.set(name, value)
|
|
48
51
|
this.emit(name, value)
|
|
49
52
|
}
|
|
50
53
|
|
|
51
|
-
public getState(name: Names)
|
|
54
|
+
public getState(name: Names) {
|
|
52
55
|
return this.states?.get(name)
|
|
53
56
|
}
|
|
54
57
|
|
|
55
|
-
public deleteState(name: Names)
|
|
58
|
+
public deleteState(name: Names) {
|
|
56
59
|
this.states?.delete(name)
|
|
57
60
|
}
|
|
58
61
|
|
|
59
|
-
public clear()
|
|
62
|
+
public clear() {
|
|
60
63
|
this.cbsMap.clear()
|
|
61
64
|
this.states?.clear()
|
|
62
65
|
}
|
|
63
|
-
}
|
|
66
|
+
}
|
package/src/event.ts
CHANGED
|
@@ -4,14 +4,14 @@ export class Event<Payload = void> {
|
|
|
4
4
|
private cbs = new Set<(val: Payload) => void>()
|
|
5
5
|
private state?: Payload
|
|
6
6
|
|
|
7
|
-
public on(cb: (val: Payload) => void)
|
|
7
|
+
public on(cb: (val: Payload) => void) {
|
|
8
8
|
if ("state" in this) cb(this.state!)
|
|
9
9
|
|
|
10
10
|
this.cbs.add(cb)
|
|
11
11
|
return new Cancellable(() => this.cbs.delete(cb))
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
public once(cb: (val: Payload) => void)
|
|
14
|
+
public once(cb: (val: Payload) => void) {
|
|
15
15
|
const handle = new Cancellable()
|
|
16
16
|
handle.watch(
|
|
17
17
|
this.on((value) => {
|
|
@@ -22,17 +22,17 @@ export class Event<Payload = void> {
|
|
|
22
22
|
return handle
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
public emit(value: Payload)
|
|
25
|
+
public emit(value: Payload) {
|
|
26
26
|
for (const cb of this.cbs) cb(value)
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
public setState(value: Payload)
|
|
29
|
+
public setState(value: Payload) {
|
|
30
30
|
if ("state" in this && this.state === value) return
|
|
31
31
|
this.state = value
|
|
32
32
|
this.emit(value)
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
public getState()
|
|
35
|
+
public getState() {
|
|
36
36
|
return this.state
|
|
37
37
|
}
|
|
38
38
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
export { default, default as Events } from "./Events"
|
|
2
2
|
export { default as event, EventFunctions, Event } from "./event"
|
|
3
|
+
|
|
4
|
+
const w = window as any
|
|
5
|
+
"__LINCODE_EVENTS__" in w &&
|
|
6
|
+
console.warn("multiple versions of @lincode/events detected")
|
|
7
|
+
w.__LINCODE_EVENTS__ = true
|