@gjsify/adwaita-core 0.31.0 → 0.33.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/lib/esm/about-dialog.js +3 -0
- package/lib/esm/action-row.js +1 -0
- package/lib/esm/avatar.js +1 -0
- package/lib/esm/banner.js +1 -0
- package/lib/esm/button-content.js +1 -0
- package/lib/esm/carousel.js +1 -0
- package/lib/esm/checks.js +1 -0
- package/lib/esm/chrome.js +1 -0
- package/lib/esm/conformance/about-dialog.js +6 -0
- package/lib/esm/conformance/action-row.js +1 -0
- package/lib/esm/conformance/avatar.js +1 -0
- package/lib/esm/conformance/banner.js +1 -0
- package/lib/esm/conformance/button-content.js +1 -0
- package/lib/esm/conformance/carousel.js +1 -0
- package/lib/esm/conformance/checks.js +1 -0
- package/lib/esm/conformance/chrome.js +1 -0
- package/lib/esm/conformance/data-grid.js +1 -0
- package/lib/esm/conformance/dialog.js +1 -0
- package/lib/esm/conformance/entry-row.js +1 -0
- package/lib/esm/conformance/index.js +1 -0
- package/lib/esm/conformance/navigation-view.js +1 -0
- package/lib/esm/conformance/popover.js +1 -0
- package/lib/esm/conformance/preferences.js +1 -0
- package/lib/esm/conformance/rows.js +1 -0
- package/lib/esm/conformance/sidebar.js +1 -0
- package/lib/esm/conformance/spinner.js +1 -0
- package/lib/esm/conformance/split-button.js +1 -0
- package/lib/esm/conformance/split-view.js +1 -0
- package/lib/esm/conformance/tab-view.js +1 -0
- package/lib/esm/conformance/view-stack.js +1 -0
- package/lib/esm/conformance/view-switcher.js +1 -0
- package/lib/esm/conformance/wrap-box.js +1 -0
- package/lib/esm/data-grid.js +1 -0
- package/lib/esm/dialog.js +1 -1
- package/lib/esm/easing.js +1 -0
- package/lib/esm/entry-row.js +1 -0
- package/lib/esm/glib.js +1 -0
- package/lib/esm/index.js +1 -1
- package/lib/esm/length-unit.js +1 -0
- package/lib/esm/navigation-view.js +1 -0
- package/lib/esm/popover.js +1 -0
- package/lib/esm/preferences.js +1 -0
- package/lib/esm/rows.js +1 -1
- package/lib/esm/sidebar.js +1 -0
- package/lib/esm/spinner.js +1 -0
- package/lib/esm/split-button.js +1 -0
- package/lib/esm/split-view.js +1 -0
- package/lib/esm/tab-view.js +1 -0
- package/lib/esm/view-stack.js +1 -0
- package/lib/esm/view-switcher.js +1 -0
- package/lib/esm/wrap-box.js +1 -0
- package/lib/types/about-dialog.d.ts +391 -0
- package/lib/types/about-dialog.spec.d.ts +2 -0
- package/lib/types/action-row.d.ts +270 -0
- package/lib/types/action-row.spec.d.ts +2 -0
- package/lib/types/avatar.d.ts +112 -0
- package/lib/types/avatar.spec.d.ts +2 -0
- package/lib/types/banner.d.ts +104 -0
- package/lib/types/banner.spec.d.ts +2 -0
- package/lib/types/button-content.d.ts +141 -0
- package/lib/types/button-content.spec.d.ts +2 -0
- package/lib/types/carousel.d.ts +535 -0
- package/lib/types/carousel.spec.d.ts +2 -0
- package/lib/types/checks.d.ts +63 -0
- package/lib/types/checks.spec.d.ts +2 -0
- package/lib/types/chrome.d.ts +355 -0
- package/lib/types/chrome.spec.d.ts +2 -0
- package/lib/types/conformance/about-dialog.d.ts +314 -0
- package/lib/types/conformance/action-row.d.ts +186 -0
- package/lib/types/conformance/avatar.d.ts +61 -0
- package/lib/types/conformance/banner.d.ts +91 -0
- package/lib/types/conformance/button-content.d.ts +110 -0
- package/lib/types/conformance/carousel.d.ts +298 -0
- package/lib/types/conformance/checks.d.ts +29 -0
- package/lib/types/conformance/chrome.d.ts +207 -0
- package/lib/types/conformance/data-grid.d.ts +136 -0
- package/lib/types/conformance/dialog.d.ts +97 -0
- package/lib/types/conformance/entry-row.d.ts +187 -0
- package/lib/types/conformance/index.d.ts +46 -0
- package/lib/types/conformance/navigation-view.d.ts +235 -0
- package/lib/types/conformance/popover.d.ts +58 -0
- package/lib/types/conformance/preferences.d.ts +184 -0
- package/lib/types/conformance/rows.d.ts +74 -0
- package/lib/types/conformance/sidebar.d.ts +182 -0
- package/lib/types/conformance/spinner.d.ts +66 -0
- package/lib/types/conformance/split-button.d.ts +193 -0
- package/lib/types/conformance/split-view.d.ts +301 -0
- package/lib/types/conformance/tab-view.d.ts +449 -0
- package/lib/types/conformance/view-stack.d.ts +121 -0
- package/lib/types/conformance/view-switcher.d.ts +443 -0
- package/lib/types/conformance/wrap-box.d.ts +185 -0
- package/lib/types/data-grid.d.ts +140 -0
- package/lib/types/data-grid.spec.d.ts +2 -0
- package/lib/types/dialog.d.ts +144 -0
- package/lib/types/easing.d.ts +21 -0
- package/lib/types/entry-row.d.ts +308 -0
- package/lib/types/entry-row.spec.d.ts +2 -0
- package/lib/types/glib.d.ts +49 -0
- package/lib/types/index.d.ts +50 -4
- package/lib/types/length-unit.d.ts +24 -0
- package/lib/types/navigation-view.d.ts +343 -0
- package/lib/types/navigation-view.spec.d.ts +2 -0
- package/lib/types/popover.d.ts +155 -0
- package/lib/types/popover.spec.d.ts +2 -0
- package/lib/types/preferences.d.ts +349 -0
- package/lib/types/preferences.spec.d.ts +2 -0
- package/lib/types/rows.d.ts +96 -8
- package/lib/types/sidebar.d.ts +308 -0
- package/lib/types/sidebar.spec.d.ts +2 -0
- package/lib/types/spinner.d.ts +117 -0
- package/lib/types/spinner.spec.d.ts +2 -0
- package/lib/types/split-button.d.ts +316 -0
- package/lib/types/split-button.spec.d.ts +2 -0
- package/lib/types/split-view.d.ts +703 -0
- package/lib/types/split-view.spec.d.ts +2 -0
- package/lib/types/tab-view.d.ts +616 -0
- package/lib/types/tab-view.spec.d.ts +2 -0
- package/lib/types/view-stack.d.ts +278 -0
- package/lib/types/view-stack.spec.d.ts +2 -0
- package/lib/types/view-switcher.d.ts +524 -0
- package/lib/types/view-switcher.spec.d.ts +2 -0
- package/lib/types/wrap-box.d.ts +200 -0
- package/lib/types/wrap-box.spec.d.ts +2 -0
- package/package.json +8 -4
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { type AdwLengthUnit } from './length-unit.js';
|
|
2
|
+
/** `AdwJustifyMode` — the three values of `Adw.WrapBox:justify` (adw-wrap-layout.h:26-30). */
|
|
3
|
+
export type AdwWrapBoxJustify = 'none' | 'fill' | 'spread';
|
|
4
|
+
/** `AdwWrapPolicy` — whether children may shrink before a line wraps (adw-wrap-layout.h:39-43). */
|
|
5
|
+
export type AdwWrapPolicy = 'minimum' | 'natural';
|
|
6
|
+
/** `AdwPackDirection` — which end of a line children are packed from. */
|
|
7
|
+
export type AdwWrapBoxPackDirection = 'start-to-end' | 'end-to-start';
|
|
8
|
+
/** `GtkOrientation` — the axis children are packed along. */
|
|
9
|
+
export type AdwWrapBoxOrientation = 'horizontal' | 'vertical';
|
|
10
|
+
/** The three justify modes, for validating an attribute against the C enum. */
|
|
11
|
+
export declare const ADW_WRAP_BOX_JUSTIFY_MODES: readonly AdwWrapBoxJustify[];
|
|
12
|
+
/** The two wrap policies, for validating an attribute against the C enum. */
|
|
13
|
+
export declare const ADW_WRAP_POLICIES: readonly AdwWrapPolicy[];
|
|
14
|
+
/**
|
|
15
|
+
* `Adw.WrapBox:child-spacing` and `:line-spacing` defaults, in px.
|
|
16
|
+
*
|
|
17
|
+
* Both are `g_param_spec_int (…, 0, G_MAXINT, 0, …)` — adw-wrap-box.c:285-287
|
|
18
|
+
* and :393-395. The NativeScript port defaulted BOTH to 6 DIPs, so identical
|
|
19
|
+
* markup was looser on a phone than in the browser.
|
|
20
|
+
*/
|
|
21
|
+
export declare const ADW_WRAP_BOX_DEFAULT_SPACING = 0;
|
|
22
|
+
/**
|
|
23
|
+
* `Adw.WrapBox:align` default (adw-wrap-box.c:335-337).
|
|
24
|
+
*
|
|
25
|
+
* Declared `g_param_spec_float (…, 0, 1, 0, …)`, so GObject validates an
|
|
26
|
+
* out-of-range value back into `[0, 1]` on set.
|
|
27
|
+
*/
|
|
28
|
+
export declare const ADW_WRAP_BOX_DEFAULT_ALIGN = 0;
|
|
29
|
+
/** `Adw.WrapBox:justify` default — `ADW_JUSTIFY_NONE` (adw-wrap-box.c:364-366). */
|
|
30
|
+
export declare const ADW_WRAP_BOX_DEFAULT_JUSTIFY: AdwWrapBoxJustify;
|
|
31
|
+
/** `Adw.WrapBox:justify-last-line` default — `FALSE` (adw-wrap-box.c:379-381). */
|
|
32
|
+
export declare const ADW_WRAP_BOX_DEFAULT_JUSTIFY_LAST_LINE = false;
|
|
33
|
+
/** `Adw.WrapBox:wrap-policy` default — `ADW_WRAP_NATURAL` (adw-wrap-box.c:491-495). */
|
|
34
|
+
export declare const ADW_WRAP_BOX_DEFAULT_WRAP_POLICY: AdwWrapPolicy;
|
|
35
|
+
/**
|
|
36
|
+
* `Adw.WrapBox:natural-line-length` default — `-1`, i.e. UNSET
|
|
37
|
+
* (adw-wrap-box.c:438-441, range `-1 … G_MAXINT`).
|
|
38
|
+
*
|
|
39
|
+
* `-1` is not "zero length": it means the box asks for whatever its children
|
|
40
|
+
* need, so a renderer must not write it into a size.
|
|
41
|
+
*/
|
|
42
|
+
export declare const ADW_WRAP_BOX_NATURAL_LINE_LENGTH_UNSET = -1;
|
|
43
|
+
/**
|
|
44
|
+
* The unit default for all three length properties — `ADW_LENGTH_UNIT_PX`
|
|
45
|
+
* (adw-wrap-box.c:300-305, :408-413, :454-458).
|
|
46
|
+
*
|
|
47
|
+
* Note this DIFFERS from the split views, which default to `sp`
|
|
48
|
+
* (`DEFAULT_SIDEBAR_WIDTH_UNIT`). Sharing `normalizeLengthUnit` between them is
|
|
49
|
+
* only safe because the default is the caller's argument, not the helper's.
|
|
50
|
+
*/
|
|
51
|
+
export declare const ADW_WRAP_BOX_DEFAULT_LENGTH_UNIT: AdwLengthUnit;
|
|
52
|
+
/** `Adw.WrapBox:pack-direction` default — `ADW_PACK_START_TO_END` (adw-wrap-box.c:313-318). */
|
|
53
|
+
export declare const ADW_WRAP_BOX_DEFAULT_PACK_DIRECTION: AdwWrapBoxPackDirection;
|
|
54
|
+
/** The two pack directions, for validating an attribute against the C enum. */
|
|
55
|
+
export declare const ADW_WRAP_BOX_PACK_DIRECTIONS: readonly AdwWrapBoxPackDirection[];
|
|
56
|
+
/**
|
|
57
|
+
* `adw_wrap_box_set_child_spacing` / `set_line_spacing`
|
|
58
|
+
* (adw-wrap-box.c:587-588, :927-928) — a negative spacing is clamped to 0 BEFORE
|
|
59
|
+
* anything else happens, so it never reaches the layout.
|
|
60
|
+
*
|
|
61
|
+
* The property is declared with a minimum of 0, which is why the clamp exists at
|
|
62
|
+
* all: without it GObject would reject the value and warn. The non-numeric cases
|
|
63
|
+
* have no C counterpart — the property is an `int` — and resolve to the default,
|
|
64
|
+
* so a typo cannot put `NaN` into a `column-gap` or a native layout pass.
|
|
65
|
+
*/
|
|
66
|
+
export declare function normalizeWrapBoxSpacing(value: unknown): number;
|
|
67
|
+
/** `Adw.WrapBox:align` — `g_param_spec_float (…, 0, 1, 0, …)`, adw-wrap-box.c:335-337. */
|
|
68
|
+
export declare function normalizeWrapBoxAlign(value: unknown): number;
|
|
69
|
+
/** An out-of-range enum value leaves a GObject property at its default. */
|
|
70
|
+
export declare function normalizeWrapBoxJustify(value: unknown): AdwWrapBoxJustify;
|
|
71
|
+
/** `Adw.WrapBox:wrap-policy` — same enum gate, defaulting to `natural`. */
|
|
72
|
+
export declare function normalizeWrapPolicy(value: unknown): AdwWrapPolicy;
|
|
73
|
+
/**
|
|
74
|
+
* `Adw.WrapBox:natural-line-length` — an `int` in `[-1, G_MAXINT]`.
|
|
75
|
+
*
|
|
76
|
+
* Anything below -1 is out of the declared range, so it lands on the sentinel
|
|
77
|
+
* rather than on 0: a GObject setter would have refused it and left the property
|
|
78
|
+
* where it was, and "unset" is what the property was born as.
|
|
79
|
+
*/
|
|
80
|
+
export declare function normalizeNaturalLineLength(value: unknown): number;
|
|
81
|
+
/** `Adw.WrapBox`'s three length units — `px` by default, unlike the split views' `sp`. */
|
|
82
|
+
export declare function normalizeWrapBoxLengthUnit(value: unknown): AdwLengthUnit;
|
|
83
|
+
/** `Adw.WrapBox:pack-direction` — the same enum gate, defaulting to `start-to-end`. */
|
|
84
|
+
export declare function normalizeWrapBoxPackDirection(value: unknown): AdwWrapBoxPackDirection;
|
|
85
|
+
/**
|
|
86
|
+
* One length property resolved to pixels — the `adw_length_unit_to_px` call the
|
|
87
|
+
* measure and allocate paths both make before laying anything out
|
|
88
|
+
* (adw-wrap-layout.c:554-565, :798-804).
|
|
89
|
+
*
|
|
90
|
+
* The UNSET natural line length passes through untouched, mirroring the C's own
|
|
91
|
+
* `if (self->natural_line_length >= 0)` gate (:562): converting `-1` would turn
|
|
92
|
+
* a sentinel into a length, and at dpi ≠ 96 it would not even stay -1.
|
|
93
|
+
*/
|
|
94
|
+
export declare function wrapBoxLengthToPx(value: number, unit: AdwLengthUnit, dpi?: number): number;
|
|
95
|
+
/** What a renderer has to do with a line's leftover space. */
|
|
96
|
+
export interface WrapBoxLineLayout {
|
|
97
|
+
/**
|
|
98
|
+
* The justify mode that governs THIS line, after the last-line gate. It is
|
|
99
|
+
* the widget's `justify` for every line except the final one, and for the
|
|
100
|
+
* final one only when `justify-last-line` is set
|
|
101
|
+
* (adw-wrap-layout.c:397-400, :705-706).
|
|
102
|
+
*/
|
|
103
|
+
justify: AdwWrapBoxJustify;
|
|
104
|
+
/**
|
|
105
|
+
* Whether the CHILDREN absorb the leftover (`allocated_size` grows to
|
|
106
|
+
* `available_size`, adw-wrap-layout.c:336-341). CSS: `flex-grow` on the
|
|
107
|
+
* items.
|
|
108
|
+
*/
|
|
109
|
+
growChildren: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Whether the GAPS absorb the leftover — children keep `minimum_size` and
|
|
112
|
+
* are spread apart by `size_delta` (adw-wrap-layout.c:338-339, :752-757).
|
|
113
|
+
* CSS: `justify-content: space-between`.
|
|
114
|
+
*/
|
|
115
|
+
growGaps: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* The MAIN-axis offset factor applied to the whole line block when nothing
|
|
118
|
+
* grows: `widget_offset += roundf (length_delta * align)`
|
|
119
|
+
* (adw-wrap-layout.c:717-725). 0 packs the line at the start of the main
|
|
120
|
+
* axis, 1 at its end. Meaningless — and reported as 0 — as soon as the line
|
|
121
|
+
* is justified, because C only computes `length_delta` inside
|
|
122
|
+
* `if (!justify_line)`.
|
|
123
|
+
*/
|
|
124
|
+
align: number;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The line-layout decision, straight from the C.
|
|
128
|
+
*
|
|
129
|
+
* `lastLine` is the FINAL line, complete or not (`i == *n_lines - 1`,
|
|
130
|
+
* adw-wrap-layout.c:463-464), so a wrap box whose children all fit on one line
|
|
131
|
+
* has that line governed by `justify-last-line` rather than by `justify` — which
|
|
132
|
+
* makes the single-line case, the common one, the counter-intuitive one.
|
|
133
|
+
*
|
|
134
|
+
* `spread` with exactly ONE child in the line does not spread anything:
|
|
135
|
+
* `n_children > 1` guards the branch that keeps children at `minimum_size`, so a
|
|
136
|
+
* lone child is STRETCHED instead, which the property documentation states
|
|
137
|
+
* outright (adw-wrap-box.c:349-352).
|
|
138
|
+
*
|
|
139
|
+
* Held to `WRAP_BOX_LINE_VECTORS` in `@gjsify/adwaita-core/conformance`, which
|
|
140
|
+
* both renderer suites drive their real widgets with.
|
|
141
|
+
*/
|
|
142
|
+
export declare function resolveWrapBoxLine(input: {
|
|
143
|
+
justify: AdwWrapBoxJustify;
|
|
144
|
+
justifyLastLine: boolean;
|
|
145
|
+
align: number;
|
|
146
|
+
lastLine: boolean;
|
|
147
|
+
childrenInLine: number;
|
|
148
|
+
}): WrapBoxLineLayout;
|
|
149
|
+
/**
|
|
150
|
+
* `wrap-policy` as the child `flex-shrink` both flex-based renderers express it
|
|
151
|
+
* with.
|
|
152
|
+
*
|
|
153
|
+
* `ADW_WRAP_NATURAL` wraps "as soon as the previous line cannot fit any more
|
|
154
|
+
* children without shrinking them past their natural size"; `ADW_WRAP_MINIMUM`
|
|
155
|
+
* "shrink[s] them down to their minimum size before wrapping"
|
|
156
|
+
* (adw-wrap-box.c:476-489).
|
|
157
|
+
*
|
|
158
|
+
* STATE THE LIMIT, because it is not a full mapping. Flexbox breaks lines on the
|
|
159
|
+
* items' HYPOTHETICAL main sizes and `flex-shrink` only distributes negative
|
|
160
|
+
* free space WITHIN a line that is already broken — so no value of it makes CSS
|
|
161
|
+
* pack more children per line, which is exactly what `minimum` is for. What it
|
|
162
|
+
* does decide is whether a line that still overflows squeezes its children or
|
|
163
|
+
* lets them spill, and that half is faithful.
|
|
164
|
+
*
|
|
165
|
+
* The reason to derive it anyway is the default. CSS defaults `flex-shrink` to
|
|
166
|
+
* **1**, i.e. to `minimum`; libadwaita defaults `wrap-policy` to `natural`. Both
|
|
167
|
+
* renderers had no policy at all, so both drew the one Adwaita does not choose,
|
|
168
|
+
* on every wrap box, silently.
|
|
169
|
+
*/
|
|
170
|
+
export declare function wrapPolicyFlexShrink(policy: AdwWrapPolicy): number;
|
|
171
|
+
/** Which child-list operation is being resolved. */
|
|
172
|
+
export type WrapBoxChildOrderOp = 'insert-after' | 'reorder-after';
|
|
173
|
+
/**
|
|
174
|
+
* Where `adw_wrap_box_insert_child_after` / `reorder_child_after` put a child.
|
|
175
|
+
*
|
|
176
|
+
* Both delegate to `gtk_widget_insert_after (child, self, sibling)`
|
|
177
|
+
* (adw-wrap-box.c:1283-1300, :1315-1332), whose documented rule is the
|
|
178
|
+
* counter-intuitive one: a NULL sibling inserts at the FIRST position, not the
|
|
179
|
+
* last. Reading it as "append" is the obvious misreading, and it is silent —
|
|
180
|
+
* the child lands somewhere plausible.
|
|
181
|
+
*
|
|
182
|
+
* The guards are the C's `g_return_if_fail`s, expressed as a refusal rather than
|
|
183
|
+
* a throw because a renderer has no `g_critical` to fall through to: an insert
|
|
184
|
+
* demands the child be UNPARENTED and the sibling be a child of this box, a
|
|
185
|
+
* reorder demands the child already be one, and `child === sibling` is an
|
|
186
|
+
* explicit early return in both.
|
|
187
|
+
*
|
|
188
|
+
* Returns the new child list, or `null` when the operation is refused — the
|
|
189
|
+
* caller then leaves its view tree exactly as it was, which is what C does.
|
|
190
|
+
*/
|
|
191
|
+
export declare function resolveWrapBoxChildOrder<T>(input: {
|
|
192
|
+
/** The box's children, in order. */
|
|
193
|
+
children: readonly T[];
|
|
194
|
+
/** The child being placed. */
|
|
195
|
+
child: T;
|
|
196
|
+
/** The child to place it after, or `null`/`undefined` for the FIRST position. */
|
|
197
|
+
sibling?: T | null;
|
|
198
|
+
/** Which operation — they differ only in whether `child` is expected to be present. */
|
|
199
|
+
op: WrapBoxChildOrderOp;
|
|
200
|
+
}): T[] | null;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/adwaita-core",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Headless Adwaita widget behavior (breakpoint condition grammar + apply/unapply state machine, color-scheme observable) shared by the web and NativeScript Adwaita renderers — pure TS, no platform imports",
|
|
3
|
+
"version": "0.33.0",
|
|
4
|
+
"description": "Headless Adwaita widget behavior (breakpoint condition grammar + apply/unapply state machine, color-scheme observable, avatar derivation) shared by the web and NativeScript Adwaita renderers — pure TS, no platform imports",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
7
7
|
"types": "lib/types/index.d.ts",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./lib/types/index.d.ts",
|
|
11
11
|
"default": "./lib/esm/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./conformance": {
|
|
14
|
+
"types": "./lib/types/conformance/index.d.ts",
|
|
15
|
+
"default": "./lib/esm/conformance/index.js"
|
|
12
16
|
}
|
|
13
17
|
},
|
|
14
18
|
"files": [
|
|
@@ -42,8 +46,8 @@
|
|
|
42
46
|
"headless"
|
|
43
47
|
],
|
|
44
48
|
"devDependencies": {
|
|
45
|
-
"@gjsify/cli": "^0.
|
|
46
|
-
"@gjsify/unit": "^0.
|
|
49
|
+
"@gjsify/cli": "^0.33.0",
|
|
50
|
+
"@gjsify/unit": "^0.33.0",
|
|
47
51
|
"@types/node": "^25.9.2",
|
|
48
52
|
"typescript": "^6.0.3"
|
|
49
53
|
},
|