bytekit 1.0.30 → 2.0.0
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/README.md +58 -188
- package/dist/utils/core/ApiClient.d.ts +11 -10
- package/dist/utils/core/ApiClient.d.ts.map +1 -1
- package/dist/utils/core/ApiClient.js +17 -9
- package/dist/utils/core/ApiClient.js.map +1 -1
- package/dist/utils/core/SchemaAdapter.d.ts +35 -0
- package/dist/utils/core/SchemaAdapter.d.ts.map +1 -0
- package/dist/utils/core/SchemaAdapter.js +36 -0
- package/dist/utils/core/SchemaAdapter.js.map +1 -0
- package/dist/utils/core/index.d.ts +1 -1
- package/dist/utils/core/index.d.ts.map +1 -1
- package/dist/utils/core/index.js +1 -1
- package/dist/utils/core/index.js.map +1 -1
- package/dist/utils/helpers/QueryStringHelper.d.ts +11 -0
- package/dist/utils/helpers/QueryStringHelper.d.ts.map +1 -0
- package/dist/utils/helpers/QueryStringHelper.js +84 -0
- package/dist/utils/helpers/QueryStringHelper.js.map +1 -0
- package/dist/utils/helpers/UrlSlugHelper.d.ts +19 -0
- package/dist/utils/helpers/UrlSlugHelper.d.ts.map +1 -0
- package/dist/utils/helpers/UrlSlugHelper.js +27 -0
- package/dist/utils/helpers/UrlSlugHelper.js.map +1 -0
- package/dist/utils/helpers/index.d.ts +2 -13
- package/dist/utils/helpers/index.d.ts.map +1 -1
- package/dist/utils/helpers/index.js +2 -13
- package/dist/utils/helpers/index.js.map +1 -1
- package/dist/utils/index.d.ts +2 -8
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -8
- package/dist/utils/index.js.map +1 -1
- package/package.json +14 -73
- package/dist/color-utils.d.ts +0 -2
- package/dist/color-utils.d.ts.map +0 -1
- package/dist/color-utils.js +0 -2
- package/dist/color-utils.js.map +0 -1
- package/dist/date-utils.d.ts +0 -2
- package/dist/date-utils.d.ts.map +0 -1
- package/dist/date-utils.js +0 -2
- package/dist/date-utils.js.map +0 -1
- package/dist/number-utils.d.ts +0 -2
- package/dist/number-utils.d.ts.map +0 -1
- package/dist/number-utils.js +0 -2
- package/dist/number-utils.js.map +0 -1
- package/dist/string-utils.d.ts +0 -2
- package/dist/string-utils.d.ts.map +0 -1
- package/dist/string-utils.js +0 -2
- package/dist/string-utils.js.map +0 -1
- package/dist/utils/core/BatchRequest.d.ts +0 -79
- package/dist/utils/core/BatchRequest.d.ts.map +0 -1
- package/dist/utils/core/BatchRequest.js +0 -152
- package/dist/utils/core/BatchRequest.js.map +0 -1
- package/dist/utils/core/QueryClient.d.ts +0 -145
- package/dist/utils/core/QueryClient.d.ts.map +0 -1
- package/dist/utils/core/QueryClient.js +0 -453
- package/dist/utils/core/QueryClient.js.map +0 -1
- package/dist/utils/core/QueryState.d.ts +0 -99
- package/dist/utils/core/QueryState.d.ts.map +0 -1
- package/dist/utils/core/QueryState.js +0 -65
- package/dist/utils/core/QueryState.js.map +0 -1
- package/dist/utils/helpers/ArrayUtils.d.ts +0 -134
- package/dist/utils/helpers/ArrayUtils.d.ts.map +0 -1
- package/dist/utils/helpers/ArrayUtils.js +0 -306
- package/dist/utils/helpers/ArrayUtils.js.map +0 -1
- package/dist/utils/helpers/ColorUtils.d.ts +0 -235
- package/dist/utils/helpers/ColorUtils.d.ts.map +0 -1
- package/dist/utils/helpers/ColorUtils.js +0 -598
- package/dist/utils/helpers/ColorUtils.js.map +0 -1
- package/dist/utils/helpers/DateUtils.d.ts +0 -36
- package/dist/utils/helpers/DateUtils.d.ts.map +0 -1
- package/dist/utils/helpers/DateUtils.js +0 -131
- package/dist/utils/helpers/DateUtils.js.map +0 -1
- package/dist/utils/helpers/FormUtils.d.ts +0 -176
- package/dist/utils/helpers/FormUtils.d.ts.map +0 -1
- package/dist/utils/helpers/FormUtils.js +0 -437
- package/dist/utils/helpers/FormUtils.js.map +0 -1
- package/dist/utils/helpers/HttpStatusHelper.d.ts +0 -82
- package/dist/utils/helpers/HttpStatusHelper.d.ts.map +0 -1
- package/dist/utils/helpers/HttpStatusHelper.js +0 -174
- package/dist/utils/helpers/HttpStatusHelper.js.map +0 -1
- package/dist/utils/helpers/NumberUtils.d.ts +0 -230
- package/dist/utils/helpers/NumberUtils.d.ts.map +0 -1
- package/dist/utils/helpers/NumberUtils.js +0 -564
- package/dist/utils/helpers/NumberUtils.js.map +0 -1
- package/dist/utils/helpers/ObjectUtils.d.ts +0 -102
- package/dist/utils/helpers/ObjectUtils.d.ts.map +0 -1
- package/dist/utils/helpers/ObjectUtils.js +0 -301
- package/dist/utils/helpers/ObjectUtils.js.map +0 -1
- package/dist/utils/helpers/PaginationHelper.d.ts +0 -127
- package/dist/utils/helpers/PaginationHelper.d.ts.map +0 -1
- package/dist/utils/helpers/PaginationHelper.js +0 -295
- package/dist/utils/helpers/PaginationHelper.js.map +0 -1
- package/dist/utils/helpers/Signal.d.ts +0 -92
- package/dist/utils/helpers/Signal.d.ts.map +0 -1
- package/dist/utils/helpers/Signal.js +0 -243
- package/dist/utils/helpers/Signal.js.map +0 -1
- package/dist/utils/helpers/StringUtils.d.ts +0 -46
- package/dist/utils/helpers/StringUtils.d.ts.map +0 -1
- package/dist/utils/helpers/StringUtils.js +0 -228
- package/dist/utils/helpers/StringUtils.js.map +0 -1
- package/dist/utils/helpers/TimeUtils.d.ts +0 -87
- package/dist/utils/helpers/TimeUtils.d.ts.map +0 -1
- package/dist/utils/helpers/TimeUtils.js +0 -234
- package/dist/utils/helpers/TimeUtils.js.map +0 -1
- package/dist/utils/helpers/UrlBuilder.d.ts +0 -79
- package/dist/utils/helpers/UrlBuilder.d.ts.map +0 -1
- package/dist/utils/helpers/UrlBuilder.js +0 -161
- package/dist/utils/helpers/UrlBuilder.js.map +0 -1
- package/dist/utils/helpers/Validator.d.ts +0 -31
- package/dist/utils/helpers/Validator.d.ts.map +0 -1
- package/dist/utils/helpers/Validator.js +0 -175
- package/dist/utils/helpers/Validator.js.map +0 -1
- package/dist/utils/helpers/useSignal.d.ts +0 -11
- package/dist/utils/helpers/useSignal.d.ts.map +0 -1
- package/dist/utils/helpers/useSignal.js +0 -11
- package/dist/utils/helpers/useSignal.js.map +0 -1
- package/dist/validator.d.ts +0 -2
- package/dist/validator.d.ts.map +0 -1
- package/dist/validator.js +0 -2
- package/dist/validator.js.map +0 -1
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pagination helper for managing paginated data
|
|
3
|
-
* Supports offset-limit and cursor-based pagination
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Pagination helper for managing paginated data
|
|
7
|
-
*/
|
|
8
|
-
export class PaginationHelper {
|
|
9
|
-
constructor(items, options = {}) {
|
|
10
|
-
Object.defineProperty(this, "items", {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
writable: true,
|
|
14
|
-
value: void 0
|
|
15
|
-
});
|
|
16
|
-
Object.defineProperty(this, "pageSize", {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
configurable: true,
|
|
19
|
-
writable: true,
|
|
20
|
-
value: void 0
|
|
21
|
-
});
|
|
22
|
-
Object.defineProperty(this, "mode", {
|
|
23
|
-
enumerable: true,
|
|
24
|
-
configurable: true,
|
|
25
|
-
writable: true,
|
|
26
|
-
value: void 0
|
|
27
|
-
});
|
|
28
|
-
Object.defineProperty(this, "currentPage", {
|
|
29
|
-
enumerable: true,
|
|
30
|
-
configurable: true,
|
|
31
|
-
writable: true,
|
|
32
|
-
value: 1
|
|
33
|
-
});
|
|
34
|
-
Object.defineProperty(this, "currentCursor", {
|
|
35
|
-
enumerable: true,
|
|
36
|
-
configurable: true,
|
|
37
|
-
writable: true,
|
|
38
|
-
value: void 0
|
|
39
|
-
});
|
|
40
|
-
Object.defineProperty(this, "cursorMap", {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
configurable: true,
|
|
43
|
-
writable: true,
|
|
44
|
-
value: new Map()
|
|
45
|
-
});
|
|
46
|
-
this.items = items;
|
|
47
|
-
this.pageSize = options.pageSize ?? 10;
|
|
48
|
-
this.mode = options.mode ?? "offset";
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Get current page (offset mode)
|
|
52
|
-
*/
|
|
53
|
-
getCurrentPage() {
|
|
54
|
-
if (this.mode === "cursor") {
|
|
55
|
-
throw new Error("Use getCurrentPageByCursor() in cursor mode");
|
|
56
|
-
}
|
|
57
|
-
const start = (this.currentPage - 1) * this.pageSize;
|
|
58
|
-
const end = start + this.pageSize;
|
|
59
|
-
return this.items.slice(start, end);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get current page by cursor (cursor mode)
|
|
63
|
-
*/
|
|
64
|
-
getCurrentPageByCursor() {
|
|
65
|
-
if (this.mode === "offset") {
|
|
66
|
-
throw new Error("Use getCurrentPage() in offset mode");
|
|
67
|
-
}
|
|
68
|
-
const cursorIndex = this.currentCursor
|
|
69
|
-
? (this.cursorMap.get(this.currentCursor) ?? 0)
|
|
70
|
-
: 0;
|
|
71
|
-
const start = cursorIndex;
|
|
72
|
-
const end = start + this.pageSize;
|
|
73
|
-
return this.items.slice(start, end);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Go to next page (offset mode)
|
|
77
|
-
*/
|
|
78
|
-
next() {
|
|
79
|
-
if (this.mode === "cursor") {
|
|
80
|
-
throw new Error("Use nextByCursor() in cursor mode");
|
|
81
|
-
}
|
|
82
|
-
if (this.hasNextPage()) {
|
|
83
|
-
this.currentPage++;
|
|
84
|
-
}
|
|
85
|
-
return this.getCurrentPage();
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Go to next page by cursor (cursor mode)
|
|
89
|
-
*/
|
|
90
|
-
nextByCursor() {
|
|
91
|
-
if (this.mode === "offset") {
|
|
92
|
-
throw new Error("Use next() in offset mode");
|
|
93
|
-
}
|
|
94
|
-
const currentIndex = this.currentCursor
|
|
95
|
-
? (this.cursorMap.get(this.currentCursor) ?? 0)
|
|
96
|
-
: 0;
|
|
97
|
-
const nextIndex = currentIndex + this.pageSize;
|
|
98
|
-
if (nextIndex < this.items.length) {
|
|
99
|
-
this.currentCursor = this.generateCursor(nextIndex);
|
|
100
|
-
this.cursorMap.set(this.currentCursor, nextIndex);
|
|
101
|
-
}
|
|
102
|
-
return this.getCurrentPageByCursor();
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Go to previous page (offset mode)
|
|
106
|
-
*/
|
|
107
|
-
previous() {
|
|
108
|
-
if (this.mode === "cursor") {
|
|
109
|
-
throw new Error("Use previousByCursor() in cursor mode");
|
|
110
|
-
}
|
|
111
|
-
if (this.hasPreviousPage()) {
|
|
112
|
-
this.currentPage--;
|
|
113
|
-
}
|
|
114
|
-
return this.getCurrentPage();
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Go to previous page by cursor (cursor mode)
|
|
118
|
-
*/
|
|
119
|
-
previousByCursor() {
|
|
120
|
-
if (this.mode === "offset") {
|
|
121
|
-
throw new Error("Use previous() in offset mode");
|
|
122
|
-
}
|
|
123
|
-
const currentIndex = this.currentCursor
|
|
124
|
-
? (this.cursorMap.get(this.currentCursor) ?? 0)
|
|
125
|
-
: 0;
|
|
126
|
-
const previousIndex = Math.max(0, currentIndex - this.pageSize);
|
|
127
|
-
if (previousIndex >= 0) {
|
|
128
|
-
this.currentCursor = this.generateCursor(previousIndex);
|
|
129
|
-
this.cursorMap.set(this.currentCursor, previousIndex);
|
|
130
|
-
}
|
|
131
|
-
return this.getCurrentPageByCursor();
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Go to specific page (offset mode)
|
|
135
|
-
*/
|
|
136
|
-
goToPage(page) {
|
|
137
|
-
if (this.mode === "cursor") {
|
|
138
|
-
throw new Error("Use goToCursor() in cursor mode");
|
|
139
|
-
}
|
|
140
|
-
if (page < 1)
|
|
141
|
-
page = 1;
|
|
142
|
-
if (page > this.getTotalPages())
|
|
143
|
-
page = this.getTotalPages();
|
|
144
|
-
this.currentPage = page;
|
|
145
|
-
return this.getCurrentPage();
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Go to specific cursor (cursor mode)
|
|
149
|
-
*/
|
|
150
|
-
goToCursor(cursor) {
|
|
151
|
-
if (this.mode === "offset") {
|
|
152
|
-
throw new Error("Use goToPage() in offset mode");
|
|
153
|
-
}
|
|
154
|
-
if (!this.cursorMap.has(cursor)) {
|
|
155
|
-
const index = this.decodeCursor(cursor);
|
|
156
|
-
if (index >= 0 && index < this.items.length) {
|
|
157
|
-
this.cursorMap.set(cursor, index);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (this.cursorMap.has(cursor)) {
|
|
161
|
-
this.currentCursor = cursor;
|
|
162
|
-
}
|
|
163
|
-
return this.getCurrentPageByCursor();
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Check if has next page
|
|
167
|
-
*/
|
|
168
|
-
hasNextPage() {
|
|
169
|
-
if (this.mode === "offset") {
|
|
170
|
-
return this.currentPage < this.getTotalPages();
|
|
171
|
-
}
|
|
172
|
-
const currentIndex = this.currentCursor
|
|
173
|
-
? (this.cursorMap.get(this.currentCursor) ?? 0)
|
|
174
|
-
: 0;
|
|
175
|
-
return currentIndex + this.pageSize < this.items.length;
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Check if has previous page
|
|
179
|
-
*/
|
|
180
|
-
hasPreviousPage() {
|
|
181
|
-
if (this.mode === "offset") {
|
|
182
|
-
return this.currentPage > 1;
|
|
183
|
-
}
|
|
184
|
-
const currentIndex = this.currentCursor
|
|
185
|
-
? (this.cursorMap.get(this.currentCursor) ?? 0)
|
|
186
|
-
: 0;
|
|
187
|
-
return currentIndex > 0;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Get total pages (offset mode)
|
|
191
|
-
*/
|
|
192
|
-
getTotalPages() {
|
|
193
|
-
return Math.ceil(this.items.length / this.pageSize);
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Get total items
|
|
197
|
-
*/
|
|
198
|
-
getTotalItems() {
|
|
199
|
-
return this.items.length;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Get current page number (offset mode)
|
|
203
|
-
*/
|
|
204
|
-
getCurrentPageNumber() {
|
|
205
|
-
return this.currentPage;
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Get pagination state (offset mode)
|
|
209
|
-
*/
|
|
210
|
-
getState() {
|
|
211
|
-
return {
|
|
212
|
-
currentPage: this.currentPage,
|
|
213
|
-
pageSize: this.pageSize,
|
|
214
|
-
total: this.items.length,
|
|
215
|
-
totalPages: this.getTotalPages(),
|
|
216
|
-
hasNextPage: this.hasNextPage(),
|
|
217
|
-
hasPreviousPage: this.hasPreviousPage(),
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Get cursor pagination state (cursor mode)
|
|
222
|
-
*/
|
|
223
|
-
getCursorState() {
|
|
224
|
-
const currentIndex = this.currentCursor
|
|
225
|
-
? (this.cursorMap.get(this.currentCursor) ?? 0)
|
|
226
|
-
: 0;
|
|
227
|
-
const nextIndex = currentIndex + this.pageSize;
|
|
228
|
-
const previousIndex = Math.max(0, currentIndex - this.pageSize);
|
|
229
|
-
return {
|
|
230
|
-
cursor: this.currentCursor,
|
|
231
|
-
nextCursor: nextIndex < this.items.length
|
|
232
|
-
? this.generateCursor(nextIndex)
|
|
233
|
-
: undefined,
|
|
234
|
-
previousCursor: currentIndex > 0
|
|
235
|
-
? this.generateCursor(previousIndex)
|
|
236
|
-
: undefined,
|
|
237
|
-
hasNextPage: nextIndex < this.items.length,
|
|
238
|
-
hasPreviousPage: currentIndex > 0,
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Reset to first page
|
|
243
|
-
*/
|
|
244
|
-
reset() {
|
|
245
|
-
this.currentPage = 1;
|
|
246
|
-
this.currentCursor = undefined;
|
|
247
|
-
this.cursorMap.clear();
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Set page size
|
|
251
|
-
*/
|
|
252
|
-
setPageSize(size) {
|
|
253
|
-
if (size <= 0)
|
|
254
|
-
throw new Error("Page size must be greater than 0");
|
|
255
|
-
this.pageSize = size;
|
|
256
|
-
this.reset();
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Generate cursor from index
|
|
260
|
-
*/
|
|
261
|
-
generateCursor(index) {
|
|
262
|
-
return Buffer.from(index.toString()).toString("base64");
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Decode cursor to index
|
|
266
|
-
*/
|
|
267
|
-
decodeCursor(cursor) {
|
|
268
|
-
try {
|
|
269
|
-
return parseInt(Buffer.from(cursor, "base64").toString(), 10);
|
|
270
|
-
}
|
|
271
|
-
catch {
|
|
272
|
-
return 0;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Get all items
|
|
277
|
-
*/
|
|
278
|
-
getAllItems() {
|
|
279
|
-
return [...this.items];
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Update items
|
|
283
|
-
*/
|
|
284
|
-
setItems(items) {
|
|
285
|
-
this.items = items;
|
|
286
|
-
this.reset();
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Factory function for creating paginators
|
|
291
|
-
*/
|
|
292
|
-
export function createPaginator(items, options) {
|
|
293
|
-
return new PaginationHelper(items, options);
|
|
294
|
-
}
|
|
295
|
-
//# sourceMappingURL=PaginationHelper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationHelper.js","sourceRoot":"","sources":["../../../src/utils/helpers/PaginationHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Signal-based reactive state management
|
|
3
|
-
* Provides fine-grained reactivity without full component re-renders
|
|
4
|
-
* Similar to Preact Signals
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Core Signal class
|
|
8
|
-
* Holds a reactive value that notifies subscribers on changes
|
|
9
|
-
*/
|
|
10
|
-
export declare class Signal<T> {
|
|
11
|
-
protected _value: T;
|
|
12
|
-
protected subscribers: Set<() => void>;
|
|
13
|
-
constructor(initialValue: T);
|
|
14
|
-
/**
|
|
15
|
-
* Get the current value
|
|
16
|
-
* Automatically subscribes the current computation if any
|
|
17
|
-
*/
|
|
18
|
-
get value(): T;
|
|
19
|
-
/**
|
|
20
|
-
* Set a new value
|
|
21
|
-
* Notifies all subscribers if the value changed
|
|
22
|
-
*/
|
|
23
|
-
set value(newValue: T);
|
|
24
|
-
/**
|
|
25
|
-
* Get value without subscribing
|
|
26
|
-
*/
|
|
27
|
-
peek(): T;
|
|
28
|
-
/**
|
|
29
|
-
* Subscribe to changes
|
|
30
|
-
* @returns Unsubscribe function
|
|
31
|
-
*/
|
|
32
|
-
subscribe(callback: () => void): () => void;
|
|
33
|
-
/**
|
|
34
|
-
* Notify all subscribers
|
|
35
|
-
*/
|
|
36
|
-
protected notify(): void;
|
|
37
|
-
/**
|
|
38
|
-
* Get number of subscribers (for debugging)
|
|
39
|
-
*/
|
|
40
|
-
get subscriberCount(): number;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Computed signal (derived state)
|
|
44
|
-
* Automatically updates when dependencies change
|
|
45
|
-
*/
|
|
46
|
-
export declare class Computed<T> extends Signal<T> {
|
|
47
|
-
private compute;
|
|
48
|
-
private dirty;
|
|
49
|
-
private dependencies;
|
|
50
|
-
constructor(compute: () => T);
|
|
51
|
-
/**
|
|
52
|
-
* Get computed value
|
|
53
|
-
* Re-computes if dirty, otherwise returns cached value
|
|
54
|
-
*/
|
|
55
|
-
get value(): T;
|
|
56
|
-
/**
|
|
57
|
-
* Computed signals are read-only
|
|
58
|
-
*/
|
|
59
|
-
set value(_: T);
|
|
60
|
-
/**
|
|
61
|
-
* Recompute the value
|
|
62
|
-
*/
|
|
63
|
-
private recompute;
|
|
64
|
-
/**
|
|
65
|
-
* Force recomputation
|
|
66
|
-
*/
|
|
67
|
-
refresh(): void;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Effect - runs side effects when dependencies change
|
|
71
|
-
* @param callback Effect callback, can return cleanup function
|
|
72
|
-
* @returns Cleanup function
|
|
73
|
-
*/
|
|
74
|
-
export declare function effect(callback: () => void | (() => void)): () => void;
|
|
75
|
-
/**
|
|
76
|
-
* Batch multiple signal updates
|
|
77
|
-
* Defers notifications until batch completes
|
|
78
|
-
*/
|
|
79
|
-
export declare function batch(callback: () => void): void;
|
|
80
|
-
/**
|
|
81
|
-
* Create a signal
|
|
82
|
-
*/
|
|
83
|
-
export declare function signal<T>(initialValue: T): Signal<T>;
|
|
84
|
-
/**
|
|
85
|
-
* Create a computed signal
|
|
86
|
-
*/
|
|
87
|
-
export declare function computed<T>(compute: () => T): Computed<T>;
|
|
88
|
-
/**
|
|
89
|
-
* Untracked - access signals without subscribing
|
|
90
|
-
*/
|
|
91
|
-
export declare function untracked<T>(callback: () => T): T;
|
|
92
|
-
//# sourceMappingURL=Signal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Signal.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/Signal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;GAGG;AACH,qBAAa,MAAM,CAAC,CAAC;IACjB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACpB,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,CAAa;gBAEvC,YAAY,EAAE,CAAC;IAI3B;;;OAGG;IACH,IAAI,KAAK,IAAI,CAAC,CAMb;IAED;;;OAGG;IACH,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,EAKpB;IAED;;OAEG;IACH,IAAI,IAAI,CAAC;IAIT;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C;;OAEG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;IAUxB;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;CACJ;AAED;;;GAGG;AACH,qBAAa,QAAQ,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,YAAY,CAA8B;gBAEtC,OAAO,EAAE,MAAM,CAAC;IAK5B;;;OAGG;IACH,IAAI,KAAK,IAAI,CAAC,CAWb;IAED;;OAEG;IACH,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAEb;IAED;;OAEG;IACH,OAAO,CAAC,SAAS;IAsBjB;;OAEG;IACH,OAAO,IAAI,IAAI;CAIlB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,CAiCtE;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAahD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAEzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAQjD"}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Signal-based reactive state management
|
|
3
|
-
* Provides fine-grained reactivity without full component re-renders
|
|
4
|
-
* Similar to Preact Signals
|
|
5
|
-
*/
|
|
6
|
-
// Global context for dependency tracking
|
|
7
|
-
let currentComputation = null;
|
|
8
|
-
let batchDepth = 0;
|
|
9
|
-
const batchedUpdates = new Set();
|
|
10
|
-
/**
|
|
11
|
-
* Core Signal class
|
|
12
|
-
* Holds a reactive value that notifies subscribers on changes
|
|
13
|
-
*/
|
|
14
|
-
export class Signal {
|
|
15
|
-
constructor(initialValue) {
|
|
16
|
-
Object.defineProperty(this, "_value", {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
configurable: true,
|
|
19
|
-
writable: true,
|
|
20
|
-
value: void 0
|
|
21
|
-
});
|
|
22
|
-
Object.defineProperty(this, "subscribers", {
|
|
23
|
-
enumerable: true,
|
|
24
|
-
configurable: true,
|
|
25
|
-
writable: true,
|
|
26
|
-
value: new Set()
|
|
27
|
-
});
|
|
28
|
-
this._value = initialValue;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Get the current value
|
|
32
|
-
* Automatically subscribes the current computation if any
|
|
33
|
-
*/
|
|
34
|
-
get value() {
|
|
35
|
-
// Auto-subscribe if there's an active computation
|
|
36
|
-
if (currentComputation) {
|
|
37
|
-
this.subscribers.add(currentComputation);
|
|
38
|
-
}
|
|
39
|
-
return this._value;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Set a new value
|
|
43
|
-
* Notifies all subscribers if the value changed
|
|
44
|
-
*/
|
|
45
|
-
set value(newValue) {
|
|
46
|
-
if (!Object.is(this._value, newValue)) {
|
|
47
|
-
this._value = newValue;
|
|
48
|
-
this.notify();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get value without subscribing
|
|
53
|
-
*/
|
|
54
|
-
peek() {
|
|
55
|
-
return this._value;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Subscribe to changes
|
|
59
|
-
* @returns Unsubscribe function
|
|
60
|
-
*/
|
|
61
|
-
subscribe(callback) {
|
|
62
|
-
this.subscribers.add(callback);
|
|
63
|
-
return () => {
|
|
64
|
-
this.subscribers.delete(callback);
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Notify all subscribers
|
|
69
|
-
*/
|
|
70
|
-
notify() {
|
|
71
|
-
if (batchDepth > 0) {
|
|
72
|
-
// Defer notifications during batch
|
|
73
|
-
this.subscribers.forEach((sub) => batchedUpdates.add(sub));
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
// Immediate notification
|
|
77
|
-
this.subscribers.forEach((sub) => sub());
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get number of subscribers (for debugging)
|
|
82
|
-
*/
|
|
83
|
-
get subscriberCount() {
|
|
84
|
-
return this.subscribers.size;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Computed signal (derived state)
|
|
89
|
-
* Automatically updates when dependencies change
|
|
90
|
-
*/
|
|
91
|
-
export class Computed extends Signal {
|
|
92
|
-
constructor(compute) {
|
|
93
|
-
super(undefined);
|
|
94
|
-
Object.defineProperty(this, "compute", {
|
|
95
|
-
enumerable: true,
|
|
96
|
-
configurable: true,
|
|
97
|
-
writable: true,
|
|
98
|
-
value: void 0
|
|
99
|
-
});
|
|
100
|
-
Object.defineProperty(this, "dirty", {
|
|
101
|
-
enumerable: true,
|
|
102
|
-
configurable: true,
|
|
103
|
-
writable: true,
|
|
104
|
-
value: true
|
|
105
|
-
});
|
|
106
|
-
Object.defineProperty(this, "dependencies", {
|
|
107
|
-
enumerable: true,
|
|
108
|
-
configurable: true,
|
|
109
|
-
writable: true,
|
|
110
|
-
value: new Set()
|
|
111
|
-
});
|
|
112
|
-
this.compute = compute;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Get computed value
|
|
116
|
-
* Re-computes if dirty, otherwise returns cached value
|
|
117
|
-
*/
|
|
118
|
-
get value() {
|
|
119
|
-
if (this.dirty) {
|
|
120
|
-
this.recompute();
|
|
121
|
-
}
|
|
122
|
-
// Subscribe caller to this computed
|
|
123
|
-
if (currentComputation) {
|
|
124
|
-
this.subscribers.add(currentComputation);
|
|
125
|
-
}
|
|
126
|
-
return this._value;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Computed signals are read-only
|
|
130
|
-
*/
|
|
131
|
-
set value(_) {
|
|
132
|
-
throw new Error("Cannot set value of computed signal");
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Recompute the value
|
|
136
|
-
*/
|
|
137
|
-
recompute() {
|
|
138
|
-
// Clear old dependencies
|
|
139
|
-
this.dependencies.clear();
|
|
140
|
-
// Track new dependencies
|
|
141
|
-
const prevComputation = currentComputation;
|
|
142
|
-
currentComputation = () => {
|
|
143
|
-
this.dirty = true;
|
|
144
|
-
this.notify();
|
|
145
|
-
};
|
|
146
|
-
// Store cleanup for dependencies
|
|
147
|
-
this.dependencies.add(currentComputation);
|
|
148
|
-
try {
|
|
149
|
-
this._value = this.compute();
|
|
150
|
-
this.dirty = false;
|
|
151
|
-
}
|
|
152
|
-
finally {
|
|
153
|
-
currentComputation = prevComputation;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Force recomputation
|
|
158
|
-
*/
|
|
159
|
-
refresh() {
|
|
160
|
-
this.dirty = true;
|
|
161
|
-
this.recompute();
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Effect - runs side effects when dependencies change
|
|
166
|
-
* @param callback Effect callback, can return cleanup function
|
|
167
|
-
* @returns Cleanup function
|
|
168
|
-
*/
|
|
169
|
-
export function effect(callback) {
|
|
170
|
-
let cleanup;
|
|
171
|
-
let isDisposed = false;
|
|
172
|
-
const execute = () => {
|
|
173
|
-
if (isDisposed)
|
|
174
|
-
return;
|
|
175
|
-
// Run cleanup from previous execution
|
|
176
|
-
if (cleanup) {
|
|
177
|
-
cleanup();
|
|
178
|
-
}
|
|
179
|
-
// Execute effect
|
|
180
|
-
const prevComputation = currentComputation;
|
|
181
|
-
currentComputation = execute;
|
|
182
|
-
try {
|
|
183
|
-
cleanup = callback();
|
|
184
|
-
}
|
|
185
|
-
finally {
|
|
186
|
-
currentComputation = prevComputation;
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
// Initial execution
|
|
190
|
-
execute();
|
|
191
|
-
// Return dispose function
|
|
192
|
-
return () => {
|
|
193
|
-
isDisposed = true;
|
|
194
|
-
if (cleanup) {
|
|
195
|
-
cleanup();
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Batch multiple signal updates
|
|
201
|
-
* Defers notifications until batch completes
|
|
202
|
-
*/
|
|
203
|
-
export function batch(callback) {
|
|
204
|
-
batchDepth++;
|
|
205
|
-
try {
|
|
206
|
-
callback();
|
|
207
|
-
}
|
|
208
|
-
finally {
|
|
209
|
-
batchDepth--;
|
|
210
|
-
if (batchDepth === 0) {
|
|
211
|
-
// Execute all batched updates
|
|
212
|
-
const updates = Array.from(batchedUpdates);
|
|
213
|
-
batchedUpdates.clear();
|
|
214
|
-
updates.forEach((update) => update());
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Create a signal
|
|
220
|
-
*/
|
|
221
|
-
export function signal(initialValue) {
|
|
222
|
-
return new Signal(initialValue);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Create a computed signal
|
|
226
|
-
*/
|
|
227
|
-
export function computed(compute) {
|
|
228
|
-
return new Computed(compute);
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Untracked - access signals without subscribing
|
|
232
|
-
*/
|
|
233
|
-
export function untracked(callback) {
|
|
234
|
-
const prevComputation = currentComputation;
|
|
235
|
-
currentComputation = null;
|
|
236
|
-
try {
|
|
237
|
-
return callback();
|
|
238
|
-
}
|
|
239
|
-
finally {
|
|
240
|
-
currentComputation = prevComputation;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
//# sourceMappingURL=Signal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Signal.js","sourceRoot":"","sources":["../../../src/utils/helpers/Signal.ts"],"names":[],"mappings":"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"}
|