native-document 1.0.169 → 1.0.173
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/CHANGELOG.md +100 -2
- package/docs/vitepress-conventions.md +2 -2
- package/index.d.ts +1 -1
- package/package.json +11 -4
- package/src/components/BaseComponent.js +43 -1
- package/src/components/accordion/Accordion.js +1 -0
- package/src/components/accordion/AccordionItem.js +1 -0
- package/src/components/alert/Alert.js +4 -0
- package/src/components/avatar/Avatar.js +1 -0
- package/src/components/avatar/AvatarGroup.js +1 -0
- package/src/components/badge/Badge.js +1 -0
- package/src/components/breadcrumb/BreadCrumb.js +4 -0
- package/src/components/button/Button.js +1 -0
- package/src/components/card/Card.js +1 -0
- package/src/components/context-menu/ContextMenu.js +2 -0
- package/src/components/context-menu/ContextMenuGroup.js +2 -0
- package/src/components/context-menu/ContextMenuItem.js +2 -0
- package/src/components/divider/Divider.js +2 -0
- package/src/components/dropdown/Dropdown.js +1 -0
- package/src/components/dropdown/DropdownDivider.js +1 -0
- package/src/components/dropdown/DropdownGroup.js +1 -0
- package/src/components/dropdown/DropdownItem.js +1 -0
- package/src/components/dropdown/DropdownTrigger.js +1 -0
- package/src/components/form/FormControl.js +1 -0
- package/src/components/form/field/Field.js +1 -0
- package/src/components/form/field/types/StringField.js +1 -1
- package/src/components/icon/Icon.js +1 -0
- package/src/components/list/ListItem.js +1 -0
- package/src/components/menu/Menu.js +3 -0
- package/src/components/menu/MenuDivider.js +1 -0
- package/src/components/menu/MenuGroup.js +1 -0
- package/src/components/menu/MenuItem.js +1 -0
- package/src/components/menu/MenuLink.js +1 -0
- package/src/components/modal/Modal.js +4 -0
- package/src/components/pagination/Pagination.js +1 -0
- package/src/components/popover/Popover.js +1 -0
- package/src/components/popover/PopoverFooter.js +1 -0
- package/src/components/popover/PopoverHeader.js +1 -0
- package/src/components/progress/Progress.js +5 -0
- package/src/components/skeleton/Skeleton.js +4 -0
- package/src/components/slider/Slider.js +1 -0
- package/src/components/spacer/Spacer.js +1 -0
- package/src/components/spinner/Spinner.js +1 -0
- package/src/components/splitter/Splitter.js +1 -0
- package/src/components/splitter/SplitterGutter.js +6 -0
- package/src/components/splitter/SplitterPanel.js +1 -0
- package/src/components/stacks/AbsoluteStack.js +1 -0
- package/src/components/stacks/FixedStack.js +1 -0
- package/src/components/stacks/HStack.js +1 -0
- package/src/components/stacks/PositionStack.js +1 -0
- package/src/components/stacks/RelativeStack.js +1 -0
- package/src/components/stacks/Stack.js +1 -0
- package/src/components/stacks/VStack.js +1 -0
- package/src/components/stepper/Stepper.js +1 -0
- package/src/components/stepper/StepperStep.js +1 -0
- package/src/components/switch/Switch.js +1 -0
- package/src/components/table/DataTable.js +1 -0
- package/src/components/table/SimpleTable.js +1 -0
- package/src/components/tabs/Tabs.js +1 -0
- package/src/components/toast/Toast.js +1 -0
- package/src/components/tooltip/Tooltip.js +1 -0
- package/src/core/data/MemoryManager.js +6 -1
- package/src/core/data/ObservableItem.js +33 -15
- package/src/core/data/ObservableObject.js +1 -2
- package/src/core/elements/anchor/anchor.js +4 -3
- package/src/core/elements/anchor/one-child-anchor-overwriting.js +4 -4
- package/src/core/elements/content-formatter.js +19 -0
- package/src/core/elements/control/for-each-array-cache.js +59 -0
- package/src/core/elements/control/for-each-array.js +15 -23
- package/src/core/wrappers/AttributesWrapper.js +12 -12
- package/src/core/wrappers/ElementCreator.js +33 -10
- package/src/core/wrappers/HtmlElementWrapper.js +17 -13
- package/src/core/wrappers/NDElement.js +23 -8
- package/src/core/wrappers/NdPrototype.js +64 -39
- package/src/core/wrappers/constants.js +12 -12
- package/src/core/wrappers/prototypes/nd-element-extensions.js +127 -57
- package/src/core/wrappers/template-cloner/NodeCloner.js +10 -6
- package/src/core/wrappers/template-cloner/TemplateCloner.js +7 -4
- package/src/fetch/NativeFetch.js +1 -0
- package/src/ui/components/accordion/AccordionItemRender.js +29 -7
- package/src/ui/components/alert/AlertRender.js +6 -0
- package/src/ui/components/breadcrumb/BreadcrumbRender.js +9 -1
- package/src/ui/components/button/ButtonRender.js +3 -0
- package/src/ui/components/contextmenu/ContextmenuRender.js +2 -0
- package/src/ui/components/dropdown/DropdownRender.js +3 -0
- package/src/ui/components/dropdown/item/DropdownItemRender.js +6 -1
- package/src/ui/components/form/FieldCollectionRender.js +4 -0
- package/src/ui/components/form/fields/CheckboxFieldRender.js +4 -0
- package/src/ui/components/form/fields/CheckboxGroupFieldRender.js +4 -0
- package/src/ui/components/form/fields/FieldRender.js +1 -1
- package/src/ui/components/form/fields/RadioFieldRender.js +4 -0
- package/src/ui/components/form/fields/RangeFieldRender.js +4 -0
- package/src/ui/components/form/fields/SelectFieldRender.js +5 -0
- package/src/ui/components/form/fields/SliderFieldRender.js +3 -0
- package/src/ui/components/icon/tabler/TablerIconRender.js +0 -1
- package/src/ui/components/list/item/ListItemRender.js +4 -0
- package/src/ui/components/menu/MenuItemRender.js +8 -0
- package/src/ui/components/menu/MenuLinkRender.js +11 -0
- package/src/ui/components/menu/MenuRender.js +5 -0
- package/src/ui/components/menu/helpers.js +2 -1
- package/src/ui/components/modal/ModalRender.js +8 -2
- package/src/ui/components/progress/ProgressRender.js +9 -0
- package/src/ui/components/skeleton/SkeletonRender.js +2 -0
- package/src/ui/components/spinner/SpinnerRender.js +3 -0
- package/src/ui/components/splitter/SplitterGutterRender.js +4 -0
- package/src/ui/components/splitter/SplitterPanelRender.js +4 -0
- package/src/ui/components/splitter/SplitterRender.js +2 -0
- package/src/ui/components/stepper/StepperRender.js +2 -1
- package/src/ui/components/stepper/StepperStepRender.js +8 -1
- package/src/ui/components/switch/SwitchRender.js +3 -0
- package/src/ui/components/table/data-table/DataTableRender.js +4 -0
- package/src/ui/components/table/simple-table/SimpleTableRender.js +2 -0
- package/src/ui/components/toast/ToastRender.js +4 -0
- package/src/ui/utils/aria.js +19 -0
- package/tests/integration/ui/attributes-wrapper.test.js +177 -0
- package/tests/integration/ui/for-each-array.test.js +167 -0
- package/tests/integration/ui/lifecycle.test.js +146 -0
- package/tests/integration/ui/show-if.test.js +168 -0
- package/tests/unit/core/observable-array.test.js +404 -0
- package/tests/unit/core/observable-item.test.js +428 -0
- package/tests/unit/core/observable-object.test.js +239 -0
- package/tests/unit/core/observable-resource.test.js +323 -0
- package/tests/unit/core/store.test.js +347 -0
- package/tests/unit/router/route-matching.test.js +169 -0
- package/tests/unit/router/router-guards.test.js +189 -0
- package/tests/unit/utils/cache.test.js +120 -0
- package/tests/unit/utils/filters.test.js +394 -0
- package/types/elements.d.ts +5 -0
- package/types/native-fetch.d.ts +1 -1
- package/types/observable-resource.d.ts +2 -2
- package/types/observable.d.ts +137 -21
- package/types/service.d.ts +2 -1
- package/utils.js +7 -4
- package/vitest.config.js +15 -0
package/types/observable.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {FilterResult, PredicateMap} from
|
|
1
|
+
import { FilterResult, PredicateMap } from './filters';
|
|
2
2
|
|
|
3
3
|
export type Unsubscribe = () => void;
|
|
4
4
|
|
|
@@ -41,45 +41,96 @@ export interface FormattersStatic {
|
|
|
41
41
|
|
|
42
42
|
export declare const Formatters: FormattersStatic;
|
|
43
43
|
|
|
44
|
+
// -- Observable system type definitions ---------------------------------------
|
|
44
45
|
|
|
45
|
-
// Observable system type definitions
|
|
46
46
|
export interface ObservableItem<T = any> {
|
|
47
47
|
readonly $currentValue: T;
|
|
48
48
|
readonly $previousValue: T;
|
|
49
49
|
readonly $initialValue: T | null;
|
|
50
50
|
readonly $isCleanedUp: boolean;
|
|
51
|
+
readonly $memoryId: number | null;
|
|
52
|
+
readonly __$Observable: true;
|
|
53
|
+
readonly __$isObservable: true;
|
|
51
54
|
|
|
52
55
|
$value: T;
|
|
53
|
-
$memoryId: number | null;
|
|
54
56
|
|
|
55
57
|
val(): T;
|
|
56
58
|
set(value: T | ((prev: T) => T)): void;
|
|
57
59
|
trigger(operations?: ObservableOperation): void;
|
|
58
60
|
cleanup(): void;
|
|
61
|
+
clone(): ObservableItem<T>;
|
|
62
|
+
disconnectAll(): void;
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Registers a subscriber. Does NOT return an unsubscribe function —
|
|
66
|
+
* call .unsubscribe(callback) with the same reference to remove it.
|
|
67
|
+
*/
|
|
68
|
+
subscribe(callback: (current: T, previous: T, operations?: ObservableOperation) => void): void;
|
|
61
69
|
unsubscribe(callback: Function): void;
|
|
62
|
-
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Registers a watcher for a specific value. Does NOT return an unsubscribe
|
|
73
|
+
* function — call .off(value, callback) to remove it.
|
|
74
|
+
*/
|
|
75
|
+
on(value: T, callback: ObservableItem<boolean> | ((isActive: boolean) => void)): void;
|
|
76
|
+
off(value: T, callback?: Function): void;
|
|
77
|
+
once(predicate: T | ((value: T) => boolean), callback: (value: T) => void): void;
|
|
78
|
+
onCleanup(callback: () => void): void;
|
|
79
|
+
|
|
80
|
+
intercept(callback: (newValue: T, currentValue: T) => T | undefined): this;
|
|
81
|
+
interceptMutations(callback: (operation: ObservableOperation) => void): this;
|
|
63
82
|
|
|
64
83
|
check<U>(callback: (value: T) => U): ObservableChecker<U>;
|
|
65
84
|
transform<U>(callback: (value: T) => U): ObservableChecker<U>;
|
|
66
85
|
is<U>(callback: (value: T) => U): ObservableChecker<U>;
|
|
67
86
|
select<U>(callback: (value: T) => U): ObservableChecker<U>;
|
|
68
|
-
pluck<U>(
|
|
87
|
+
pluck<U>(key: string): ObservableChecker<U>;
|
|
69
88
|
format(type: FormatType | ((value: T) => string), options?: FormatOptions): ObservableItem<string>;
|
|
70
89
|
get(key: string | number): any;
|
|
71
90
|
when(value: T): ObservableWhen<T>;
|
|
72
|
-
|
|
73
|
-
once(predicate: T | ((value: T) => boolean), callback: (value: T) => void): void;
|
|
74
|
-
onCleanup(callback: () => void): void;
|
|
75
|
-
intercept(callback: (newValue: T, currentValue: T) => T | undefined): this;
|
|
91
|
+
|
|
76
92
|
persist(key: string, options?: {
|
|
77
93
|
get?: (value: any) => T;
|
|
78
94
|
set?: (value: T) => any;
|
|
79
95
|
}): this;
|
|
80
|
-
|
|
96
|
+
|
|
97
|
+
// -- comparison helpers (is*) -----------------------------------------------
|
|
98
|
+
|
|
99
|
+
isEqualTo(value: T | ObservableItem<T>): ObservableChecker<boolean>;
|
|
100
|
+
isNotEqualTo(value: T | ObservableItem<T>): ObservableChecker<boolean>;
|
|
101
|
+
isGreaterThan(value: T | ObservableItem<T>): ObservableChecker<boolean>;
|
|
102
|
+
isGreaterThanOrEqualTo(value: T | ObservableItem<T>): ObservableChecker<boolean>;
|
|
103
|
+
isLessThan(value: T | ObservableItem<T>): ObservableChecker<boolean>;
|
|
104
|
+
isLessThanOrEqualTo(value: T | ObservableItem<T>): ObservableChecker<boolean>;
|
|
105
|
+
isBetween(min: T | ObservableItem<T>, max: T | ObservableItem<T>): ObservableChecker<boolean>;
|
|
106
|
+
isNull(): ObservableChecker<boolean>;
|
|
107
|
+
isTruthy(): ObservableChecker<boolean>;
|
|
108
|
+
isFalsy(): ObservableChecker<boolean>;
|
|
109
|
+
isStartingWith(value: string | ObservableItem<string>): ObservableChecker<boolean>;
|
|
110
|
+
isEndingWith(value: string | ObservableItem<string>): ObservableChecker<boolean>;
|
|
111
|
+
isMatchingPattern(pattern: RegExp | ObservableItem<RegExp>): ObservableChecker<boolean>;
|
|
112
|
+
isEmpty(): ObservableChecker<boolean>;
|
|
113
|
+
isNotEmpty(): ObservableChecker<boolean>;
|
|
114
|
+
isIncludes(value: any | ObservableItem<any>): ObservableChecker<boolean>;
|
|
115
|
+
isIncludedIn(collection: any[] | ObservableItem<any[]>): ObservableChecker<boolean>;
|
|
116
|
+
isOneOf(collection: any[] | ObservableItem<any[]>): ObservableChecker<boolean>;
|
|
117
|
+
isHaving(key: string | ObservableItem<string>): ObservableChecker<boolean>;
|
|
118
|
+
|
|
119
|
+
// -- transform helpers (to*) -------------------------------------------------
|
|
120
|
+
|
|
121
|
+
toUpperCase(): ObservableChecker<string>;
|
|
122
|
+
toLowerCase(): ObservableChecker<string>;
|
|
123
|
+
toTrimmed(): ObservableChecker<string>;
|
|
124
|
+
toBoolean(): ObservableChecker<boolean>;
|
|
125
|
+
toLiteral(template: string, placeholder?: string): ObservableChecker<string>;
|
|
126
|
+
toFormatted(template: string, placeholder?: string): ObservableChecker<string>;
|
|
127
|
+
toProperty<U = any>(path: string): ObservableChecker<U>;
|
|
128
|
+
toLength(): ObservableChecker<number>;
|
|
129
|
+
toClamped(min: number | ObservableItem<number>, max: number | ObservableItem<number>): ObservableChecker<number>;
|
|
130
|
+
toPercent(total: number | ObservableItem<number>): ObservableChecker<number>;
|
|
81
131
|
|
|
82
132
|
toString(): string;
|
|
133
|
+
valueOf(): T;
|
|
83
134
|
equals(value: any): boolean;
|
|
84
135
|
toBool(): boolean;
|
|
85
136
|
toggle(): void;
|
|
@@ -93,7 +144,8 @@ export class ObservableWhen<T = any> {
|
|
|
93
144
|
|
|
94
145
|
constructor(observer: ObservableItem<T>, value: T);
|
|
95
146
|
|
|
96
|
-
|
|
147
|
+
/** Does NOT return an unsubscribe function — use .off() on the underlying observer. */
|
|
148
|
+
subscribe(callback: (value: boolean) => void): void;
|
|
97
149
|
val(): boolean;
|
|
98
150
|
isMatch(): boolean;
|
|
99
151
|
isActive(): boolean;
|
|
@@ -106,11 +158,14 @@ export interface ObservableOperation {
|
|
|
106
158
|
}
|
|
107
159
|
|
|
108
160
|
export interface ObservableChecker<T = any> {
|
|
161
|
+
readonly __$Observable: true;
|
|
109
162
|
readonly __$isObservableChecker: true;
|
|
110
163
|
|
|
111
|
-
|
|
164
|
+
/** Does NOT return an unsubscribe function. */
|
|
165
|
+
subscribe(callback: (value: T) => void): void;
|
|
112
166
|
check<U>(callback: (value: T) => U): ObservableChecker<U>;
|
|
113
167
|
val(): T;
|
|
168
|
+
toNdElement(): Text;
|
|
114
169
|
|
|
115
170
|
set(value: any): void;
|
|
116
171
|
trigger(): void;
|
|
@@ -119,6 +174,7 @@ export interface ObservableChecker<T = any> {
|
|
|
119
174
|
|
|
120
175
|
export interface ObservableArray<T> extends ObservableItem<T[]> {
|
|
121
176
|
readonly length: number;
|
|
177
|
+
readonly __$isObservableArray: true;
|
|
122
178
|
|
|
123
179
|
push(...items: T[]): number;
|
|
124
180
|
pop(): T | undefined;
|
|
@@ -128,16 +184,19 @@ export interface ObservableArray<T> extends ObservableItem<T[]> {
|
|
|
128
184
|
sort(compareFn?: (a: T, b: T) => number): T[];
|
|
129
185
|
splice(start: number, deleteCount?: number, ...items: T[]): T[];
|
|
130
186
|
|
|
131
|
-
|
|
187
|
+
empty(): boolean;
|
|
132
188
|
clear(): boolean;
|
|
133
189
|
merge(values: T[]): void;
|
|
134
190
|
removeItem(item: T): T[];
|
|
135
191
|
remove(index: number): T[];
|
|
136
192
|
swap(indexA: number, indexB: number): boolean;
|
|
137
|
-
|
|
138
|
-
|
|
193
|
+
swapItems(itemA: T, itemB: T): boolean;
|
|
194
|
+
insertAfter(item: T, afterItem: T): T[];
|
|
195
|
+
count(condition: (item: T, index?: number) => boolean): number;
|
|
196
|
+
populateAndRender(items: T[], factory: any, options: any): void;
|
|
139
197
|
|
|
140
198
|
map<U>(callback: (value: T, index: number, array: T[]) => U): U[];
|
|
199
|
+
forEach(callback: (value: T, index: number, array: T[]) => void): void;
|
|
141
200
|
filter(callback: (value: T, index: number, array: T[]) => boolean): T[];
|
|
142
201
|
reduce<U>(callback: (acc: U, value: T, index: number, array: T[]) => U, initial: U): U;
|
|
143
202
|
some(callback: (value: T, index: number, array: T[]) => boolean): boolean;
|
|
@@ -146,12 +205,21 @@ export interface ObservableArray<T> extends ObservableItem<T[]> {
|
|
|
146
205
|
at(index: number): T | undefined;
|
|
147
206
|
findIndex(callback: (value: T, index: number, array: T[]) => boolean): number;
|
|
148
207
|
concat(...items: (T | T[])[]): T[];
|
|
208
|
+
indexOf(item: T): number;
|
|
209
|
+
includes(item: T): boolean;
|
|
149
210
|
|
|
150
|
-
where(predicates: PredicateMap<T>): ObservableArray<T>;
|
|
211
|
+
where(predicates: PredicateMap<T> | ((item: T) => boolean)): ObservableArray<T>;
|
|
151
212
|
whereSome<K extends keyof T>(fields: K[], filter: FilterResult<T[K]>): ObservableArray<T>;
|
|
152
213
|
whereEvery<K extends keyof T>(fields: K[], filter: FilterResult<T[K]>): ObservableArray<T>;
|
|
153
214
|
|
|
154
|
-
|
|
215
|
+
/** Returns an unsubscribe function that stops all deep observation. */
|
|
216
|
+
deepSubscribe(callback: (value: T[]) => void): Unsubscribe;
|
|
217
|
+
|
|
218
|
+
/** One-way sync — pushes mutations from this array to the target. Returns unsubscribe. */
|
|
219
|
+
sync(target: ObservableArray<T>): Unsubscribe;
|
|
220
|
+
|
|
221
|
+
clone(): ObservableArray<T>;
|
|
222
|
+
isNotEmpty(): ObservableChecker<boolean>;
|
|
155
223
|
}
|
|
156
224
|
|
|
157
225
|
export type ObservableObject<T extends Record<string, any>> = ObservableItem<T> & {
|
|
@@ -175,6 +243,12 @@ export type ObservableObject<T extends Record<string, any>> = ObservableItem<T>
|
|
|
175
243
|
keys(): string[];
|
|
176
244
|
$keys(): string[];
|
|
177
245
|
observables(): ObservableItem<any>[];
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Subscribing to an ObservableObject also deep-subscribes to all nested
|
|
249
|
+
* observables and observable arrays — triggers on any nested change.
|
|
250
|
+
*/
|
|
251
|
+
subscribe(callback: (current: T, previous: T, operations?: ObservableOperation) => void): void;
|
|
178
252
|
} & {
|
|
179
253
|
[K in keyof T]: T[K] extends (infer U)[]
|
|
180
254
|
? ObservableArray<U>
|
|
@@ -183,6 +257,40 @@ export type ObservableObject<T extends Record<string, any>> = ObservableItem<T>
|
|
|
183
257
|
: ObservableItem<T[K]>;
|
|
184
258
|
};
|
|
185
259
|
|
|
260
|
+
// -- ObservableResource ---------------------------------------------------------
|
|
261
|
+
|
|
262
|
+
export type ResourceState = 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored';
|
|
263
|
+
|
|
264
|
+
export interface ObservableResourceConfig<T = any> {
|
|
265
|
+
auto?: boolean;
|
|
266
|
+
lazy?: boolean;
|
|
267
|
+
debounce?: number;
|
|
268
|
+
into?: ObservableItem<T>;
|
|
269
|
+
apply?: (result: any, data: ObservableItem<T>) => void;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
export interface ObservableResource<T = any> {
|
|
273
|
+
readonly data: ObservableItem<T>;
|
|
274
|
+
readonly error: ObservableItem<Error | null>;
|
|
275
|
+
readonly state: ObservableItem<ResourceState>;
|
|
276
|
+
readonly loading: ObservableItem<boolean>;
|
|
277
|
+
|
|
278
|
+
fetch(): this;
|
|
279
|
+
refetch(): this;
|
|
280
|
+
mutate(value: T): this;
|
|
281
|
+
into(target: ObservableItem<T>): this;
|
|
282
|
+
apply(callback: (result: any, data: ObservableItem<T>) => void): this;
|
|
283
|
+
destroy(): void;
|
|
284
|
+
|
|
285
|
+
isReady(): ObservableChecker<boolean>;
|
|
286
|
+
isPending(): ObservableChecker<boolean>;
|
|
287
|
+
isRefreshing(): ObservableChecker<boolean>;
|
|
288
|
+
isErrored(): ObservableChecker<boolean>;
|
|
289
|
+
isUnresolved(): ObservableChecker<boolean>;
|
|
290
|
+
|
|
291
|
+
onSuccess(callback: (data: T) => void): this;
|
|
292
|
+
onError(callback: (error: Error) => void): this;
|
|
293
|
+
}
|
|
186
294
|
|
|
187
295
|
export interface BatchFunction<TArgs extends any[] = any[], TReturn = any> {
|
|
188
296
|
(...args: TArgs): TReturn;
|
|
@@ -210,8 +318,14 @@ export interface ObservableStatic {
|
|
|
210
318
|
object<T extends Record<string, any>>(value: T, configs?: ObservableConfig | null): ObservableObject<T>;
|
|
211
319
|
json<T extends Record<string, any>>(value: T, configs?: ObservableConfig | null): ObservableObject<T>;
|
|
212
320
|
|
|
213
|
-
|
|
214
|
-
|
|
321
|
+
resource<T = any>(
|
|
322
|
+
fn: (...args: any[]) => Promise<T>,
|
|
323
|
+
dependencies?: ValidComputedDependencies,
|
|
324
|
+
config?: ObservableResourceConfig<T> | boolean,
|
|
325
|
+
): ObservableResource<T>;
|
|
326
|
+
|
|
327
|
+
computed<T>(callback: (...values: any[]) => T, dependencies?: ValidComputedDependencies | BatchFunction): ObservableItem<T>;
|
|
328
|
+
computed<T>(callback: (...values: any[]) => T, batchFunction?: BatchFunction): ObservableItem<T>;
|
|
215
329
|
|
|
216
330
|
batch<TArgs extends any[], TReturn>(
|
|
217
331
|
callback: (...args: TArgs) => TReturn
|
|
@@ -219,9 +333,11 @@ export interface ObservableStatic {
|
|
|
219
333
|
|
|
220
334
|
value(data: any): any;
|
|
221
335
|
update(target: any, data: any): void;
|
|
336
|
+
setLocale(locale: string | ObservableItem<string>): void;
|
|
337
|
+
useValueProperty(propertyName?: string): void;
|
|
222
338
|
|
|
223
339
|
getById(id: number): ObservableItem | null;
|
|
224
340
|
cleanup(observable: ObservableItem): void;
|
|
225
341
|
autoCleanup(enable?: boolean, options?: AutoCleanupOptions): void;
|
|
226
342
|
arrayOfObject<T extends Record<string, any>>(data: T[]): ObservableObject<T>[];
|
|
227
|
-
}
|
|
343
|
+
}
|
package/types/service.d.ts
CHANGED
package/utils.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import NativeFetch from
|
|
2
|
-
import * as Cache from
|
|
3
|
-
import * as filters from
|
|
4
|
-
import {classPropertyAccumulator, cssPropertyAccumulator} from
|
|
1
|
+
import NativeFetch from './src/fetch/NativeFetch';
|
|
2
|
+
import * as Cache from './src/core/utils/cache';
|
|
3
|
+
import * as filters from './src/core/utils/filters/index';
|
|
4
|
+
import {classPropertyAccumulator, cssPropertyAccumulator} from './src/core/utils/property-accumulator';
|
|
5
|
+
|
|
6
|
+
const Service = Cache;
|
|
5
7
|
|
|
6
8
|
export {
|
|
7
9
|
NativeFetch,
|
|
8
10
|
Cache,
|
|
11
|
+
Service,
|
|
9
12
|
filters,
|
|
10
13
|
classPropertyAccumulator,
|
|
11
14
|
cssPropertyAccumulator
|
package/vitest.config.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineConfig } from 'vitest/config';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
test: {
|
|
5
|
+
environment: 'happy-dom',
|
|
6
|
+
globals: true,
|
|
7
|
+
include: ['tests/**/*.test.js'],
|
|
8
|
+
coverage: {
|
|
9
|
+
provider: 'v8',
|
|
10
|
+
reporter: ['text', 'html'],
|
|
11
|
+
include: ['src/**/*.js'],
|
|
12
|
+
exclude: ['src/**/*.d.ts', 'src/ui/**/*.css'],
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
});
|