@oscarpalmer/atoms 0.192.0 → 0.193.1
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/index.d.mts +25 -23
- package/dist/index.mjs +30 -31
- package/dist/queue.d.mts +25 -23
- package/dist/queue.mjs +27 -28
- package/package.json +3 -4
- package/src/array/difference.ts +0 -73
- package/src/array/exists.ts +0 -93
- package/src/array/filter.ts +0 -182
- package/src/array/find.ts +0 -183
- package/src/array/first.ts +0 -196
- package/src/array/flatten.ts +0 -20
- package/src/array/from.ts +0 -129
- package/src/array/get.ts +0 -131
- package/src/array/group-by.ts +0 -369
- package/src/array/index.ts +0 -26
- package/src/array/insert.ts +0 -52
- package/src/array/intersection.ts +0 -72
- package/src/array/last.ts +0 -194
- package/src/array/match.ts +0 -436
- package/src/array/move.ts +0 -315
- package/src/array/partition.ts +0 -91
- package/src/array/push.ts +0 -23
- package/src/array/reverse.ts +0 -33
- package/src/array/select.ts +0 -260
- package/src/array/single.ts +0 -93
- package/src/array/slice.ts +0 -335
- package/src/array/sort.ts +0 -607
- package/src/array/splice.ts +0 -106
- package/src/array/swap.ts +0 -322
- package/src/array/to-map.ts +0 -371
- package/src/array/to-record.ts +0 -351
- package/src/array/to-set.ts +0 -80
- package/src/array/toggle.ts +0 -79
- package/src/array/union.ts +0 -72
- package/src/array/unique.ts +0 -67
- package/src/array/update.ts +0 -75
- package/src/beacon.ts +0 -378
- package/src/color/constants.ts +0 -137
- package/src/color/index.ts +0 -83
- package/src/color/instance.ts +0 -162
- package/src/color/misc/alpha.ts +0 -56
- package/src/color/misc/format.ts +0 -29
- package/src/color/misc/get.ts +0 -210
- package/src/color/misc/is.ts +0 -221
- package/src/color/misc/state.ts +0 -243
- package/src/color/models.ts +0 -389
- package/src/color/space/hex.ts +0 -184
- package/src/color/space/hsl.ts +0 -174
- package/src/color/space/hwb.ts +0 -153
- package/src/color/space/rgb.ts +0 -240
- package/src/function/assert.ts +0 -174
- package/src/function/index.ts +0 -2
- package/src/function/limit.ts +0 -83
- package/src/function/memoize.ts +0 -202
- package/src/function/once.ts +0 -200
- package/src/function/retry.ts +0 -175
- package/src/function/work.ts +0 -1007
- package/src/herald.ts +0 -216
- package/src/index.ts +0 -68
- package/src/internal/array/callbacks.ts +0 -46
- package/src/internal/array/chunk.ts +0 -51
- package/src/internal/array/compact.ts +0 -56
- package/src/internal/array/find.ts +0 -200
- package/src/internal/array/group.ts +0 -42
- package/src/internal/array/index-of.ts +0 -182
- package/src/internal/array/insert.ts +0 -80
- package/src/internal/array/overlap.ts +0 -35
- package/src/internal/array/sets.ts +0 -74
- package/src/internal/array/shuffle.ts +0 -33
- package/src/internal/array/update.ts +0 -52
- package/src/internal/function/misc.ts +0 -8
- package/src/internal/function/timer.ts +0 -168
- package/src/internal/is.ts +0 -244
- package/src/internal/math/aggregate.ts +0 -164
- package/src/internal/math/misc.ts +0 -28
- package/src/internal/number.ts +0 -129
- package/src/internal/random.ts +0 -49
- package/src/internal/result.ts +0 -92
- package/src/internal/sized.ts +0 -25
- package/src/internal/string.ts +0 -128
- package/src/internal/subscription.ts +0 -264
- package/src/internal/value/compare.ts +0 -170
- package/src/internal/value/equal.ts +0 -465
- package/src/internal/value/get.ts +0 -57
- package/src/internal/value/handlers.ts +0 -95
- package/src/internal/value/has.ts +0 -118
- package/src/internal/value/misc.ts +0 -125
- package/src/internal/value/partial.ts +0 -46
- package/src/internal/value/set.ts +0 -132
- package/src/is.ts +0 -182
- package/src/logger.ts +0 -230
- package/src/math.ts +0 -281
- package/src/models.ts +0 -286
- package/src/number.ts +0 -1
- package/src/promise/delay.ts +0 -62
- package/src/promise/helpers.ts +0 -96
- package/src/promise/index.ts +0 -300
- package/src/promise/misc.ts +0 -96
- package/src/promise/models.ts +0 -195
- package/src/promise/timed.ts +0 -91
- package/src/query.ts +0 -147
- package/src/queue.ts +0 -814
- package/src/random.ts +0 -125
- package/src/result/index.ts +0 -105
- package/src/result/match.ts +0 -124
- package/src/result/misc.ts +0 -129
- package/src/result/models.ts +0 -83
- package/src/result/work/flow.ts +0 -488
- package/src/result/work/pipe.ts +0 -496
- package/src/sized/map.ts +0 -110
- package/src/sized/set.ts +0 -107
- package/src/string/case.ts +0 -236
- package/src/string/fuzzy.ts +0 -444
- package/src/string/index.ts +0 -199
- package/src/string/match.ts +0 -80
- package/src/string/normalize.ts +0 -205
- package/src/string/template.ts +0 -161
- package/src/value/clone.ts +0 -319
- package/src/value/collection.ts +0 -63
- package/src/value/diff.ts +0 -232
- package/src/value/freeze.ts +0 -322
- package/src/value/handle.ts +0 -3
- package/src/value/index.ts +0 -5
- package/src/value/merge.ts +0 -278
- package/src/value/omit.ts +0 -20
- package/src/value/pick.ts +0 -20
- package/src/value/shake.ts +0 -45
- package/src/value/smush.ts +0 -89
- package/src/value/transform.ts +0 -153
- package/src/value/unsmush.ts +0 -84
package/src/array/update.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import {updateInArray} from '../internal/array/update';
|
|
2
|
-
import type {PlainObject} from '../models';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Update an item in an array
|
|
6
|
-
*
|
|
7
|
-
* If the item exists, it will be updated; if it doesn't, it will be added
|
|
8
|
-
*
|
|
9
|
-
* @param destination Array to update within
|
|
10
|
-
* @param updated Updated items
|
|
11
|
-
* @param callback Callback to find existing item
|
|
12
|
-
* @returns Original array
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* update(
|
|
17
|
-
* [{id: 1}, {id: 2}, {id: 3}],
|
|
18
|
-
* [{id: 2, name: 'Updated'}, {id: 4, name: 'New'}],
|
|
19
|
-
* item => item.id,
|
|
20
|
-
* ); // => [{id: 1}, {id: 2, name: 'Updated'}, {id: 3}, {id: 4, name: 'New'}]
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export function update<Item>(
|
|
24
|
-
destination: Item[],
|
|
25
|
-
updated: Item[],
|
|
26
|
-
callback: (item: Item, index: number, array: Item[]) => unknown,
|
|
27
|
-
): Item[];
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Update an item in an array
|
|
31
|
-
*
|
|
32
|
-
* If the item exists, it will be updated; if it doesn't, it will be added
|
|
33
|
-
*
|
|
34
|
-
* @param destination Array to update within
|
|
35
|
-
* @param updated Updated items
|
|
36
|
-
* @param key Key to find existing item
|
|
37
|
-
* @returns Original array
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```typescript
|
|
41
|
-
* update(
|
|
42
|
-
* [{id: 1}, {id: 2}, {id: 3}],
|
|
43
|
-
* [{id: 2, name: 'Updated'}, {id: 4, name: 'New'}],
|
|
44
|
-
* 'id',
|
|
45
|
-
* ); // => [{id: 1}, {id: 2, name: 'Updated'}, {id: 3}, {id: 4, name: 'New'}]
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export function update<Item extends PlainObject, ItemKey extends keyof Item>(
|
|
49
|
-
destination: Item[],
|
|
50
|
-
updated: Item[],
|
|
51
|
-
key: ItemKey,
|
|
52
|
-
): Item[];
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Update an item in an array
|
|
56
|
-
*
|
|
57
|
-
* If the item exists, it will be updated; if it doesn't, it will be added
|
|
58
|
-
*
|
|
59
|
-
* @param destination Array to update within
|
|
60
|
-
* @param updated Updated items
|
|
61
|
-
* @returns Original array
|
|
62
|
-
*
|
|
63
|
-
* @example
|
|
64
|
-
* ```typescript
|
|
65
|
-
* update(
|
|
66
|
-
* [1, 2, 3],
|
|
67
|
-
* [2, 4],
|
|
68
|
-
* ); // => [1, 2, 3, 4]
|
|
69
|
-
* ```
|
|
70
|
-
*/
|
|
71
|
-
export function update<Item>(destination: Item[], updated: Item[]): Item[];
|
|
72
|
-
|
|
73
|
-
export function update(array: unknown[], values: unknown[], key?: unknown): unknown[] {
|
|
74
|
-
return updateInArray(array, values, key, true);
|
|
75
|
-
}
|
package/src/beacon.ts
DELETED
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
import {noop} from './internal/function/misc';
|
|
2
|
-
import {isPlainObject} from './internal/is';
|
|
3
|
-
import {
|
|
4
|
-
clearSubscriptions,
|
|
5
|
-
getSubscription,
|
|
6
|
-
getSubscriptions,
|
|
7
|
-
type Subscription,
|
|
8
|
-
type SubscriptionProperty,
|
|
9
|
-
type Subscriptions,
|
|
10
|
-
} from './internal/subscription';
|
|
11
|
-
import type {PlainObject} from './models';
|
|
12
|
-
|
|
13
|
-
// #region Types
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* A beacon is a lighthouse, holding an observable value that can be subscribed to and emitted from
|
|
17
|
-
*/
|
|
18
|
-
export type Beacon<Value> = {
|
|
19
|
-
/**
|
|
20
|
-
* Is the beacon active?
|
|
21
|
-
*/
|
|
22
|
-
get active(): boolean;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* The observable that can be subscribed to
|
|
26
|
-
*/
|
|
27
|
-
get observable(): Observable<Value>;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* The current value
|
|
31
|
-
*/
|
|
32
|
-
get value(): Value;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Deactivate the beacon
|
|
36
|
-
*/
|
|
37
|
-
deactivate(): void;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Emit a new value
|
|
41
|
-
*
|
|
42
|
-
* @param value Value to set and emit
|
|
43
|
-
* @param finish Finish the beacon after emitting? _(defaults to `false`)_
|
|
44
|
-
*/
|
|
45
|
-
emit(value: Value, finish?: boolean): void;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Emit an error
|
|
49
|
-
*
|
|
50
|
-
* @param value Error to emit
|
|
51
|
-
* @param finish Finish the beacon after emitting? _(defaults to `false`)_
|
|
52
|
-
*/
|
|
53
|
-
error(value: Error, finish?: boolean): void;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Finish the beacon
|
|
57
|
-
*/
|
|
58
|
-
finish(): void;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
export type BeaconOptions<Value> = {
|
|
62
|
-
/**
|
|
63
|
-
* Method for comparing values for equality
|
|
64
|
-
*
|
|
65
|
-
* @param first First value
|
|
66
|
-
* @param second Second value
|
|
67
|
-
* @returns `true` if the values are equal, otherwise `false`
|
|
68
|
-
* @default Object.is
|
|
69
|
-
*/
|
|
70
|
-
equal?: (first: Value, second: Value) => boolean;
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
type BeaconState<Value> = {
|
|
74
|
-
active: boolean;
|
|
75
|
-
observable: Observable<Value>;
|
|
76
|
-
options: Required<BeaconOptions<Value>>;
|
|
77
|
-
subscriptions: Subscriptions<Observer<unknown>>;
|
|
78
|
-
value: Value;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
export type Observable<Value> = {
|
|
82
|
-
/**
|
|
83
|
-
* Is the observable active?
|
|
84
|
-
*/
|
|
85
|
-
get active(): boolean;
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Deactivate the observable
|
|
89
|
-
*/
|
|
90
|
-
deactivate(): void;
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Subscribe to value changes
|
|
94
|
-
*
|
|
95
|
-
* @param onNext Callback for when the observable receives a new value
|
|
96
|
-
* @param onError Callback for when the observable receives an error
|
|
97
|
-
* @param onComplete Callback for when the observable is completed
|
|
98
|
-
* @returns Subscription to the observable
|
|
99
|
-
*/
|
|
100
|
-
subscribe(
|
|
101
|
-
onNext: (value: Value) => void,
|
|
102
|
-
onError?: (error: Error) => void,
|
|
103
|
-
onComplete?: () => void,
|
|
104
|
-
): Subscription;
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Subscribe to value changes
|
|
108
|
-
*
|
|
109
|
-
* @param observer Observer for changes
|
|
110
|
-
* @returns Subscription to the observable
|
|
111
|
-
*/
|
|
112
|
-
subscribe(observer: Observer<Value>): Subscription;
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
type ObservableState<Value> = {
|
|
116
|
-
active: boolean;
|
|
117
|
-
beacon: BeaconState<Value>;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
type Observer<Value> = {
|
|
121
|
-
/**
|
|
122
|
-
* Callback for when the observable is completed
|
|
123
|
-
*/
|
|
124
|
-
complete?: () => void;
|
|
125
|
-
/**
|
|
126
|
-
* Callback for when the observable receives an error
|
|
127
|
-
*/
|
|
128
|
-
error?: (error: Error) => void;
|
|
129
|
-
/**
|
|
130
|
-
* Callback for when the observable receives a new value
|
|
131
|
-
*/
|
|
132
|
-
next?: (value: Value) => void;
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
// #endregion
|
|
136
|
-
|
|
137
|
-
// #region Functions
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Create a new beacon
|
|
141
|
-
*
|
|
142
|
-
* @param value Initial value
|
|
143
|
-
* @param options Beacon options
|
|
144
|
-
* @returns Beacon instance
|
|
145
|
-
*/
|
|
146
|
-
export function beacon<Value>(value: Value, options?: BeaconOptions<Value>): Beacon<Value> {
|
|
147
|
-
const state: BeaconState<Value> = {
|
|
148
|
-
value,
|
|
149
|
-
active: true,
|
|
150
|
-
observable: undefined as never,
|
|
151
|
-
options: getBeaconOptions(options),
|
|
152
|
-
subscriptions: getSubscriptions(),
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
const instance = {
|
|
156
|
-
deactivate: (): void => {
|
|
157
|
-
finishBeacon(state, false);
|
|
158
|
-
},
|
|
159
|
-
emit: (value: Value, finish?: boolean): void => {
|
|
160
|
-
update(TYPE_NEXT, state, value, finish);
|
|
161
|
-
},
|
|
162
|
-
error: (value: Error, finish?: boolean): void => {
|
|
163
|
-
update(TYPE_ERROR, state, value, finish);
|
|
164
|
-
},
|
|
165
|
-
finish: (): void => {
|
|
166
|
-
finishBeacon(state, true);
|
|
167
|
-
},
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
Object.defineProperties(instance, {
|
|
171
|
-
[KEY_BEACON]: {
|
|
172
|
-
enumerable: false,
|
|
173
|
-
value: NAME_BEACON,
|
|
174
|
-
},
|
|
175
|
-
active: {
|
|
176
|
-
enumerable: true,
|
|
177
|
-
get: () => state.active,
|
|
178
|
-
},
|
|
179
|
-
observable: {
|
|
180
|
-
enumerable: true,
|
|
181
|
-
get: () => {
|
|
182
|
-
if (!state.active) {
|
|
183
|
-
throw new Error(MESSAGE_BEACON);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
state.observable ??= observe(state);
|
|
187
|
-
|
|
188
|
-
return state.observable;
|
|
189
|
-
},
|
|
190
|
-
},
|
|
191
|
-
value: {
|
|
192
|
-
enumerable: true,
|
|
193
|
-
get: () => state.value,
|
|
194
|
-
},
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
return Object.freeze(instance) as Beacon<Value>;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
function finishBeacon<Value>(state: BeaconState<Value>, emit: boolean): void {
|
|
201
|
-
if (!state.active) {
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
state.active = false;
|
|
206
|
-
|
|
207
|
-
for (const [, observer] of state.subscriptions.values.to.any) {
|
|
208
|
-
if (emit) {
|
|
209
|
-
observer.complete?.();
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
clearSubscriptions(state.subscriptions);
|
|
214
|
-
|
|
215
|
-
state.observable?.deactivate();
|
|
216
|
-
|
|
217
|
-
state.observable = undefined as never;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
function getBeaconOptions<Value>(input?: BeaconOptions<Value>): Required<BeaconOptions<Value>> {
|
|
221
|
-
const options: BeaconOptions<Value> = isPlainObject(input) ? (input as PlainObject) : {};
|
|
222
|
-
|
|
223
|
-
options.equal = typeof options.equal === 'function' ? options.equal : Object.is;
|
|
224
|
-
|
|
225
|
-
return options as Required<BeaconOptions<Value>>;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
function getObservableCallback<Callback>(value: Callback): Callback {
|
|
229
|
-
return typeof value === 'function' ? value : (noop as Callback);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
function getObserver<Value>(
|
|
233
|
-
first: Observer<Value> | ((value: Value) => void),
|
|
234
|
-
second?: (error: Error) => void,
|
|
235
|
-
third?: () => void,
|
|
236
|
-
): Observer<Value> {
|
|
237
|
-
let observer: Observer<Value> = {
|
|
238
|
-
next: noop,
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
if (typeof first === 'function') {
|
|
242
|
-
observer = {
|
|
243
|
-
error: getObservableCallback(second),
|
|
244
|
-
next: getObservableCallback(first),
|
|
245
|
-
complete: getObservableCallback(third),
|
|
246
|
-
};
|
|
247
|
-
} else if (typeof first === 'object') {
|
|
248
|
-
observer.complete = getObservableCallback(first?.complete);
|
|
249
|
-
observer.error = getObservableCallback(first?.error);
|
|
250
|
-
observer.next = getObservableCallback(first?.next);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return observer;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Is the value a beacon?
|
|
258
|
-
*
|
|
259
|
-
* @param value Value to check
|
|
260
|
-
* @returns `true` if the value is a beacon, otherwise `false`
|
|
261
|
-
*/
|
|
262
|
-
export function isBeacon<Value = unknown>(value: unknown): value is Beacon<Value> {
|
|
263
|
-
return isBeaconInstance<Beacon<Value>>(NAME_BEACON, value);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
function isBeaconInstance<Instance>(name: string, value: unknown): value is Instance {
|
|
267
|
-
return isPlainObject(value) && (value as PlainObject)[KEY_BEACON] === name;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Is the value an observable?
|
|
272
|
-
*
|
|
273
|
-
* @param value Value to check
|
|
274
|
-
* @returns `true` if the value is an observable, otherwise `false`
|
|
275
|
-
*/
|
|
276
|
-
export function isObservable<Value = unknown>(value: unknown): value is Observable<Value> {
|
|
277
|
-
return isBeaconInstance<Observable<Value>>(NAME_OBSERVABLE, value);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
function observe<Value>(beacon: BeaconState<Value>): Observable<Value> {
|
|
281
|
-
const state: ObservableState<Value> = {
|
|
282
|
-
beacon,
|
|
283
|
-
active: beacon.active,
|
|
284
|
-
};
|
|
285
|
-
|
|
286
|
-
const instance = {
|
|
287
|
-
deactivate: (): void => {
|
|
288
|
-
state.active = false;
|
|
289
|
-
},
|
|
290
|
-
subscribe(
|
|
291
|
-
first: Observer<Value> | ((value: Value) => void),
|
|
292
|
-
second?: (error: Error) => void,
|
|
293
|
-
third?: () => void,
|
|
294
|
-
): Subscription {
|
|
295
|
-
if (!beacon.active || !state.active) {
|
|
296
|
-
throw new Error(MESSAGE_OBSERVABLE);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
const observer = getObserver(first, second, third);
|
|
300
|
-
|
|
301
|
-
const subscription = getSubscription({
|
|
302
|
-
isActive: () => beacon.active && state.active,
|
|
303
|
-
property: beaconSubscription,
|
|
304
|
-
subscriptions: beacon.subscriptions,
|
|
305
|
-
value: observer,
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
observer.next?.(beacon.value);
|
|
309
|
-
|
|
310
|
-
return subscription;
|
|
311
|
-
},
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
Object.defineProperties(instance, {
|
|
315
|
-
[KEY_BEACON]: {
|
|
316
|
-
enumerable: false,
|
|
317
|
-
value: NAME_OBSERVABLE,
|
|
318
|
-
},
|
|
319
|
-
active: {
|
|
320
|
-
enumerable: true,
|
|
321
|
-
get: () => beacon.active && state.active,
|
|
322
|
-
},
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
return Object.freeze(instance) as Observable<Value>;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
function update<Value>(
|
|
329
|
-
type: keyof Observer<never>,
|
|
330
|
-
state: BeaconState<Value>,
|
|
331
|
-
value: Error | Value,
|
|
332
|
-
finish?: boolean,
|
|
333
|
-
): void {
|
|
334
|
-
if (!state.active) {
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
if (type === TYPE_NEXT) {
|
|
339
|
-
if (state.options.equal(state.value, value as Value)) {
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
state.value = value as Value;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
for (const [, observer] of state.subscriptions.values.to.any) {
|
|
347
|
-
observer[type]?.(value as never);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
if (finish === true) {
|
|
351
|
-
finishBeacon(state, true);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
// #endregion
|
|
356
|
-
|
|
357
|
-
// #region Variables
|
|
358
|
-
|
|
359
|
-
const KEY_BEACON = '$beacon';
|
|
360
|
-
|
|
361
|
-
const MESSAGE_BEACON = 'Cannot retrieve observable from a closed beacon';
|
|
362
|
-
|
|
363
|
-
const MESSAGE_OBSERVABLE = 'Cannot subscribe to a closed observable';
|
|
364
|
-
|
|
365
|
-
const NAME_BEACON = 'beacon';
|
|
366
|
-
|
|
367
|
-
const NAME_OBSERVABLE = 'observable';
|
|
368
|
-
|
|
369
|
-
const TYPE_ERROR = 'error';
|
|
370
|
-
|
|
371
|
-
const TYPE_NEXT = 'next';
|
|
372
|
-
|
|
373
|
-
const beaconSubscription: SubscriptionProperty = {
|
|
374
|
-
key: KEY_BEACON,
|
|
375
|
-
value: 'subscription',
|
|
376
|
-
};
|
|
377
|
-
|
|
378
|
-
// #endregion
|
package/src/color/constants.ts
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
Alpha,
|
|
3
|
-
ColorTypeExtended,
|
|
4
|
-
HSLAColor,
|
|
5
|
-
HSLColor,
|
|
6
|
-
HWBAColor,
|
|
7
|
-
HWBColor,
|
|
8
|
-
RGBAColor,
|
|
9
|
-
RGBColor,
|
|
10
|
-
} from './models';
|
|
11
|
-
|
|
12
|
-
// #region Types
|
|
13
|
-
|
|
14
|
-
type ColorTypes = {
|
|
15
|
-
all: Set<'alpha' | ColorTypeExtended>;
|
|
16
|
-
hex: 'hex';
|
|
17
|
-
hexa: 'hexa';
|
|
18
|
-
hsl: 'hsl';
|
|
19
|
-
hsla: 'hsla';
|
|
20
|
-
hwb: 'hwb';
|
|
21
|
-
hwba: 'hwba';
|
|
22
|
-
rgb: 'rgb';
|
|
23
|
-
rgba: 'rgba';
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
// #endregion
|
|
27
|
-
|
|
28
|
-
// #region Variables
|
|
29
|
-
|
|
30
|
-
export const COLOR_ALPHA = {
|
|
31
|
-
fullHexShort: 'f',
|
|
32
|
-
fullHexLong: 'ff',
|
|
33
|
-
name: 'alpha',
|
|
34
|
-
noneHex: '00',
|
|
35
|
-
noneValue: 0,
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export const COLOR_DEFAULTS = {
|
|
39
|
-
alpha: {
|
|
40
|
-
hex: COLOR_ALPHA.fullHexLong,
|
|
41
|
-
value: 100,
|
|
42
|
-
},
|
|
43
|
-
hexBlack: '000000',
|
|
44
|
-
hexWhite: 'ffffff',
|
|
45
|
-
hsl: {
|
|
46
|
-
hue: 0,
|
|
47
|
-
saturation: 0,
|
|
48
|
-
lightness: 0,
|
|
49
|
-
},
|
|
50
|
-
hwb: {
|
|
51
|
-
hue: 0,
|
|
52
|
-
whiteness: 0,
|
|
53
|
-
blackness: 100,
|
|
54
|
-
},
|
|
55
|
-
rgb: {
|
|
56
|
-
blue: 0,
|
|
57
|
-
green: 0,
|
|
58
|
-
red: 0,
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export const COLOR_EXPRESSION = {
|
|
63
|
-
alphaHex: /^([a-f0-9]{1,2})$/i,
|
|
64
|
-
hexLong: /^#?([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?$/i,
|
|
65
|
-
hexShort: /^#?([a-f0-9]{3,4})$/i,
|
|
66
|
-
prefix: /^#/,
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
export const COLOR_LENGTHS = {
|
|
70
|
-
hexLong: 6,
|
|
71
|
-
hexShort: 3,
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
export const COLOR_KEYS = {
|
|
75
|
-
hsl: ['hue', 'saturation', 'lightness'] as Array<keyof HSLColor>,
|
|
76
|
-
hsla: [] as Array<keyof HSLAColor>,
|
|
77
|
-
hwb: ['hue', 'whiteness', 'blackness'] as Array<keyof HWBColor>,
|
|
78
|
-
hwba: [] as Array<keyof HWBAColor>,
|
|
79
|
-
rgb: ['red', 'green', 'blue'] as Array<keyof RGBColor>,
|
|
80
|
-
rgba: [] as Array<keyof RGBAColor>,
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
COLOR_KEYS.hsla = [...COLOR_KEYS.hsl, COLOR_ALPHA.name as keyof Alpha] as Array<keyof HSLAColor>;
|
|
84
|
-
|
|
85
|
-
COLOR_KEYS.hwba = [...COLOR_KEYS.hwb, COLOR_ALPHA.name as keyof Alpha] as Array<keyof HWBAColor>;
|
|
86
|
-
|
|
87
|
-
COLOR_KEYS.rgba = [...COLOR_KEYS.rgb, COLOR_ALPHA.name as keyof Alpha] as Array<keyof RGBAColor>;
|
|
88
|
-
|
|
89
|
-
export const COLOR_MAX = {
|
|
90
|
-
degree: 360,
|
|
91
|
-
hex: 255,
|
|
92
|
-
percent: 100,
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
export const COLOR_PROPERTY = {
|
|
96
|
-
name: '$color',
|
|
97
|
-
subscription: 'subscription',
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
export const COLOR_TYPE: ColorTypes = {
|
|
101
|
-
all: undefined as unknown as Set<'alpha' | ColorTypeExtended>,
|
|
102
|
-
hex: 'hex',
|
|
103
|
-
hexa: 'hexa',
|
|
104
|
-
hsl: 'hsl',
|
|
105
|
-
hsla: 'hsla',
|
|
106
|
-
hwb: 'hwb',
|
|
107
|
-
hwba: 'hwba',
|
|
108
|
-
rgb: 'rgb',
|
|
109
|
-
rgba: 'rgba',
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
COLOR_TYPE.all = new Set([
|
|
113
|
-
COLOR_ALPHA.name as 'alpha',
|
|
114
|
-
COLOR_TYPE.hex,
|
|
115
|
-
COLOR_TYPE.hexa,
|
|
116
|
-
COLOR_TYPE.hsl,
|
|
117
|
-
COLOR_TYPE.hsla,
|
|
118
|
-
COLOR_TYPE.hwb,
|
|
119
|
-
COLOR_TYPE.hwba,
|
|
120
|
-
COLOR_TYPE.rgb,
|
|
121
|
-
COLOR_TYPE.rgba,
|
|
122
|
-
] as Array<'alpha' | ColorTypeExtended>);
|
|
123
|
-
|
|
124
|
-
// https://www.w3.org/TR/WCAG20/#relativeluminancedef
|
|
125
|
-
export const COLOR_SRGB = {
|
|
126
|
-
luminanceBlue: 0.0722,
|
|
127
|
-
luminanceExponent: 2.4,
|
|
128
|
-
luminanceGreen: 0.7152,
|
|
129
|
-
luminanceMinimum: 0.03928,
|
|
130
|
-
luminanceModifier: 1.055,
|
|
131
|
-
luminanceMultiplier: 12.92,
|
|
132
|
-
luminanceOffset: 0.055,
|
|
133
|
-
luminanceRed: 0.2126,
|
|
134
|
-
luminanceThreshold: 0.625,
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
// #endregion
|
package/src/color/index.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import {color} from './instance';
|
|
2
|
-
import {isColor} from './misc/is';
|
|
3
|
-
import type {
|
|
4
|
-
Color,
|
|
5
|
-
ColorType,
|
|
6
|
-
ColorTypeExtended,
|
|
7
|
-
ColorValue,
|
|
8
|
-
ColorValueExtended,
|
|
9
|
-
HSLAColor,
|
|
10
|
-
HSLColor,
|
|
11
|
-
HWBAColor,
|
|
12
|
-
HWBColor,
|
|
13
|
-
RGBAColor,
|
|
14
|
-
RGBColor,
|
|
15
|
-
} from './models';
|
|
16
|
-
|
|
17
|
-
// #region Functions
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Get a _Color_ from any kind of value
|
|
21
|
-
*
|
|
22
|
-
* - Values that can be parsed are: hex(a) color strings, as well as _HSL(A)_, _HWB(A)_, and _RGB(A)_ color objects
|
|
23
|
-
* - If the value is unable to be parsed, a black _Color_ will be returned
|
|
24
|
-
*
|
|
25
|
-
* @param value Original value
|
|
26
|
-
* @returns _Color_ instance
|
|
27
|
-
*/
|
|
28
|
-
export function getColor(value: unknown): Color {
|
|
29
|
-
return isColor(value) ? value : color(value);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// #endregion
|
|
33
|
-
|
|
34
|
-
// #region Exports
|
|
35
|
-
|
|
36
|
-
export {
|
|
37
|
-
getForegroundColor,
|
|
38
|
-
getHexaColor,
|
|
39
|
-
getHexColor,
|
|
40
|
-
getHslaColor,
|
|
41
|
-
getHslColor,
|
|
42
|
-
getHwbaColor,
|
|
43
|
-
getHwbColor,
|
|
44
|
-
getRgbaColor,
|
|
45
|
-
getRgbColor,
|
|
46
|
-
} from './misc/get';
|
|
47
|
-
export {
|
|
48
|
-
isColor,
|
|
49
|
-
isHexColor,
|
|
50
|
-
isHslaColor,
|
|
51
|
-
isHslColor,
|
|
52
|
-
isHwbaColor,
|
|
53
|
-
isHwbColor,
|
|
54
|
-
isRgbaColor,
|
|
55
|
-
isRgbColor,
|
|
56
|
-
} from './misc/is';
|
|
57
|
-
export {
|
|
58
|
-
getNormalizedHex,
|
|
59
|
-
hexToHsl,
|
|
60
|
-
hexToHsla,
|
|
61
|
-
hexToHwb,
|
|
62
|
-
hexToHwba,
|
|
63
|
-
hexToRgb,
|
|
64
|
-
hexToRgba,
|
|
65
|
-
} from './space/hex';
|
|
66
|
-
export {hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba} from './space/hsl';
|
|
67
|
-
export {hwbToHex, hwbToHsl, hwbToHsla, hwbToRgb, hwbToRgba} from './space/hwb';
|
|
68
|
-
export {rgbToHex, rgbToHsl, rgbToHsla, rgbToHwb, rgbToHwba} from './space/rgb';
|
|
69
|
-
export type {
|
|
70
|
-
Color,
|
|
71
|
-
ColorType,
|
|
72
|
-
ColorTypeExtended,
|
|
73
|
-
ColorValue,
|
|
74
|
-
ColorValueExtended,
|
|
75
|
-
HSLAColor,
|
|
76
|
-
HSLColor,
|
|
77
|
-
HWBAColor,
|
|
78
|
-
HWBColor,
|
|
79
|
-
RGBAColor,
|
|
80
|
-
RGBColor,
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
// #endregion
|