@bodil/signal 0.3.4 → 0.3.5
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/dist/array.d.ts +3 -1
- package/dist/array.js +18 -2
- package/dist/array.js.map +1 -1
- package/package.json +1 -1
- package/src/array.ts +21 -3
package/dist/array.d.ts
CHANGED
|
@@ -24,8 +24,10 @@ export declare class SignalArray<A> implements Iterable<A>, SignalReadonlyArray<
|
|
|
24
24
|
unshift(...values: Array<A>): number;
|
|
25
25
|
pop(): Option<A>;
|
|
26
26
|
shift(): Option<A>;
|
|
27
|
-
|
|
27
|
+
splice(start: number, deleteCount: number, ...values: Array<A>): Array<A>;
|
|
28
|
+
insert(index: number, ...values: Array<A>): this;
|
|
28
29
|
removeIndex(index: number): Option<A>;
|
|
29
30
|
remove(value: A): Option<A>;
|
|
30
31
|
removeFn(predicate: (value: A, index: number, obj: Array<A>) => boolean): Option<A>;
|
|
32
|
+
clear(): this;
|
|
31
33
|
}
|
package/dist/array.js
CHANGED
|
@@ -79,14 +79,25 @@ export class SignalArray {
|
|
|
79
79
|
this.#signal.set(null);
|
|
80
80
|
return Some(result);
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
splice(start, deleteCount, ...values) {
|
|
83
|
+
if (!Number.isInteger(start)) {
|
|
84
|
+
throw new TypeError(`Signal.Array.splice: index ${start} is not an integer`);
|
|
85
|
+
}
|
|
86
|
+
if (start > this.#array.length || start < 0) {
|
|
87
|
+
throw new RangeError(`Signal.Array.splice: index ${start} out of bounds`);
|
|
88
|
+
}
|
|
89
|
+
const result = this.#array.splice(start, deleteCount, ...values);
|
|
90
|
+
this.#signal.set(null);
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
insert(index, ...values) {
|
|
83
94
|
if (!Number.isInteger(index)) {
|
|
84
95
|
throw new TypeError(`Signal.Array.insert: index ${index} is not an integer`);
|
|
85
96
|
}
|
|
86
97
|
if (index > this.#array.length || index < 0) {
|
|
87
98
|
throw new RangeError(`Signal.Array.insert: index ${index} out of bounds`);
|
|
88
99
|
}
|
|
89
|
-
this.#array.splice(index, 0,
|
|
100
|
+
this.#array.splice(index, 0, ...values);
|
|
90
101
|
this.#signal.set(null);
|
|
91
102
|
return this;
|
|
92
103
|
}
|
|
@@ -107,5 +118,10 @@ export class SignalArray {
|
|
|
107
118
|
removeFn(predicate) {
|
|
108
119
|
return this.removeIndex(this.findIndex(predicate));
|
|
109
120
|
}
|
|
121
|
+
clear() {
|
|
122
|
+
this.#array = [];
|
|
123
|
+
this.#signal.set(null);
|
|
124
|
+
return this;
|
|
125
|
+
}
|
|
110
126
|
}
|
|
111
127
|
//# sourceMappingURL=array.js.map
|
package/dist/array.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAe,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAc3B,MAAM,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/array.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface SignalReadonlyArray<A> extends Iterable<A> {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export class SignalArray<A> implements Iterable<A>, SignalReadonlyArray<A> {
|
|
18
|
-
|
|
18
|
+
#array: Array<A>;
|
|
19
19
|
readonly #signal = Signal<null>(null, { equals: () => false });
|
|
20
20
|
|
|
21
21
|
static from<T>(iterable: Iterable<T>): SignalArray<T> {
|
|
@@ -112,14 +112,26 @@ export class SignalArray<A> implements Iterable<A>, SignalReadonlyArray<A> {
|
|
|
112
112
|
return Some(result);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
splice(start: number, deleteCount: number, ...values: Array<A>): Array<A> {
|
|
116
|
+
if (!Number.isInteger(start)) {
|
|
117
|
+
throw new TypeError(`Signal.Array.splice: index ${start} is not an integer`);
|
|
118
|
+
}
|
|
119
|
+
if (start > this.#array.length || start < 0) {
|
|
120
|
+
throw new RangeError(`Signal.Array.splice: index ${start} out of bounds`);
|
|
121
|
+
}
|
|
122
|
+
const result = this.#array.splice(start, deleteCount, ...values);
|
|
123
|
+
this.#signal.set(null);
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
insert(index: number, ...values: Array<A>): this {
|
|
116
128
|
if (!Number.isInteger(index)) {
|
|
117
129
|
throw new TypeError(`Signal.Array.insert: index ${index} is not an integer`);
|
|
118
130
|
}
|
|
119
131
|
if (index > this.#array.length || index < 0) {
|
|
120
132
|
throw new RangeError(`Signal.Array.insert: index ${index} out of bounds`);
|
|
121
133
|
}
|
|
122
|
-
this.#array.splice(index, 0,
|
|
134
|
+
this.#array.splice(index, 0, ...values);
|
|
123
135
|
this.#signal.set(null);
|
|
124
136
|
return this;
|
|
125
137
|
}
|
|
@@ -143,4 +155,10 @@ export class SignalArray<A> implements Iterable<A>, SignalReadonlyArray<A> {
|
|
|
143
155
|
removeFn(predicate: (value: A, index: number, obj: Array<A>) => boolean): Option<A> {
|
|
144
156
|
return this.removeIndex(this.findIndex(predicate as () => boolean));
|
|
145
157
|
}
|
|
158
|
+
|
|
159
|
+
clear(): this {
|
|
160
|
+
this.#array = [];
|
|
161
|
+
this.#signal.set(null);
|
|
162
|
+
return this;
|
|
163
|
+
}
|
|
146
164
|
}
|