@homebound/form-state 2.25.1 → 2.25.2

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.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TextField = exports.FormStateApp = void 0;
3
+ exports.FormStateApp = FormStateApp;
4
+ exports.TextField = TextField;
4
5
  const jsx_runtime_1 = require("react/jsx-runtime");
5
6
  const mobx_react_1 = require("mobx-react");
6
7
  const index_1 = require("./index");
@@ -33,7 +34,6 @@ function FormStateApp() {
33
34
  })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("strong", { children: "Rows" }), (0, jsx_runtime_1.jsxs)("table", { cellPadding: "4px", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "touched" }), (0, jsx_runtime_1.jsx)("th", { children: "valid" }), (0, jsx_runtime_1.jsx)("th", { children: "dirty" }), (0, jsx_runtime_1.jsx)("th", { children: "errors" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: formState.books.touched.toString() }), (0, jsx_runtime_1.jsx)("td", { children: formState.books.valid.toString() }), (0, jsx_runtime_1.jsx)("td", { children: formState.books.dirty.toString() }), (0, jsx_runtime_1.jsx)("td", { children: formState.books.errors })] }) })] })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("strong", { children: "Form" }), (0, jsx_runtime_1.jsxs)("table", { cellPadding: "4px", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "touched" }), (0, jsx_runtime_1.jsx)("th", { children: "valid" }), (0, jsx_runtime_1.jsx)("th", { children: "dirty" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { children: formState.touched.toString() }), (0, jsx_runtime_1.jsx)("td", { children: formState.valid.toString() }), (0, jsx_runtime_1.jsx)("td", { children: formState.dirty.toString() })] }) })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("button", { "data-testid": "touch", onClick: () => (formState.touched = !formState.touched), children: "touch" }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "revertChanges", onClick: () => formState.revertChanges(), children: "revert" }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "commitChanges", onClick: () => formState.commitChanges(), children: "commit" }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "set", onClick: () => formState.set({ firstName: "a2" }), children: "set" })] })] })] }) }));
34
35
  } }));
35
36
  }
36
- exports.FormStateApp = FormStateApp;
37
37
  // Configure the fields/behavior for AuthorInput's fields
38
38
  const formConfig = index_1.f.config({
39
39
  firstName: index_1.f.value().req(),
@@ -52,4 +52,3 @@ function TextField(props) {
52
52
  field.set(e.target.value);
53
53
  } }) }), (0, jsx_runtime_1.jsxs)("table", { cellPadding: "4px", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "touched" }), (0, jsx_runtime_1.jsx)("th", { children: "valid" }), (0, jsx_runtime_1.jsx)("th", { children: "dirty" }), (0, jsx_runtime_1.jsx)("th", { children: "readOnly" }), (0, jsx_runtime_1.jsx)("th", { children: "errors" }), (0, jsx_runtime_1.jsx)("th", { children: "original value" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { "data-testid": `${field.key}_touched`, children: field.touched.toString() }), (0, jsx_runtime_1.jsx)("td", { "data-testid": `${field.key}_valid`, children: field.valid.toString() }), (0, jsx_runtime_1.jsx)("td", { "data-testid": `${field.key}_dirty`, children: field.dirty.toString() }), (0, jsx_runtime_1.jsx)("td", { "data-testid": `${field.key}_readOnly`, children: field.readOnly.toString() }), (0, jsx_runtime_1.jsx)("td", { "data-testid": `${field.key}_errors`, children: field.errors }), (0, jsx_runtime_1.jsx)("td", { "data-testid": `${field.key}_original`, children: field.originalValue })] }) })] })] })) }));
54
54
  }
55
- exports.TextField = TextField;
@@ -9,17 +9,17 @@ export declare const f: {
9
9
  /** Creates the top-level config for a form, like an author or book. */
10
10
  config<T>(fields: ObjectConfigBuilderFields<T>): ObjectConfig<T>;
11
11
  /** Creates the config DSL for an object, like an author or book. */
12
- object<T_1>(fields: ObjectConfigBuilderFields<T_1>): ObjectConfigBuilder<T_1>;
12
+ object<T>(fields: ObjectConfigBuilderFields<T>): ObjectConfigBuilder<T>;
13
13
  /** Creates the config DSL for an list of objects, like an author's list of books. */
14
14
  list<U>(fields: ObjectConfigBuilderFields<U>): ListFieldConfigBuilder<U>;
15
15
  /** Creates the config DSL for a primitive value, like a first name or phone number. */
16
16
  value<V>(): ValueFieldConfigBuilder<V>;
17
17
  /** A shortcut for creating a child object with a single `id` key. */
18
- reference<V_1 extends {
18
+ reference<V extends {
19
19
  id?: unknown;
20
- }>(fields?: ObjectConfigBuilderFields<V_1> | undefined): ObjectConfigBuilder<V_1>;
20
+ }>(fields?: ObjectConfigBuilderFields<V>): ObjectConfigBuilder<V>;
21
21
  /** A shorthand for creating a computed value. */
22
- computed<V_2>(): ValueFieldConfigBuilder<V_2>;
22
+ computed<V>(): ValueFieldConfigBuilder<V>;
23
23
  };
24
24
  /**
25
25
  * Defines the fields that should be passed into `f.object({ ... })` for fhe form type `T`.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deepEquals = void 0;
3
+ exports.deepEquals = deepEquals;
4
4
  /**
5
5
  * Our own `deepEquals` because either `fast-deep-equals` or `dequal` or etc actually
6
6
  * handle cyclic data structures, despite ChatGTP's assertions/hallucinations.
@@ -39,4 +39,3 @@ function deepEquals(a, b, visited = new Set()) {
39
39
  }
40
40
  return equal;
41
41
  }
42
- exports.deepEquals = deepEquals;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newFragmentField = void 0;
3
+ exports.newFragmentField = newFragmentField;
4
4
  const mobx_1 = require("mobx");
5
5
  const utils_1 = require("../utils");
6
6
  function newFragmentField(parentInstance, key) {
@@ -23,4 +23,3 @@ function newFragmentField(parentInstance, key) {
23
23
  };
24
24
  return (0, mobx_1.makeAutoObservable)(obj, { value: false });
25
25
  }
26
- exports.newFragmentField = newFragmentField;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newListFieldState = void 0;
3
+ exports.newListFieldState = newListFieldState;
4
4
  const mobx_1 = require("mobx");
5
5
  const objectField_1 = require("./objectField");
6
6
  const rules_1 = require("../rules");
@@ -245,4 +245,3 @@ function newListFieldState(parentCopy, parentInstance, parentState, key, rules,
245
245
  (0, mobx_1.reaction)(() => proxy.rows.map((r) => r.value), () => _childTick.value++);
246
246
  return proxy;
247
247
  }
248
- exports.newListFieldState = newListFieldState;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newObjectState = exports.createObjectState = exports.fragment = void 0;
3
+ exports.fragment = fragment;
4
+ exports.createObjectState = createObjectState;
5
+ exports.newObjectState = newObjectState;
4
6
  const mobx_1 = require("mobx");
5
7
  const fragmentField_1 = require("./fragmentField");
6
8
  const listField_1 = require("./listField");
@@ -10,7 +12,6 @@ const fragmentSym = Symbol("fragment");
10
12
  function fragment(value) {
11
13
  return value;
12
14
  }
13
- exports.fragment = fragment;
14
15
  /**
15
16
  * Creates a new `ObjectState` for a given form object `T` given config rules in `config`.
16
17
  *
@@ -22,7 +23,6 @@ function createObjectState(config, instance, opts = {}) {
22
23
  const noop = () => { };
23
24
  return newObjectState({ type: "object", config }, undefined, undefined, undefined, instance, undefined, opts.maybeAutoSave || noop);
24
25
  }
25
- exports.createObjectState = createObjectState;
26
26
  /** A more internal version of `createObjectState`. */
27
27
  function newObjectState(config, parentState, parentInstance, parentListState, instance, key, maybeAutoSave) {
28
28
  // This is what we return, but we only know it's value until we call `observable`, so
@@ -247,4 +247,3 @@ function newObjectState(config, parentState, parentInstance, parentListState, in
247
247
  (0, mobx_1.reaction)(() => getFields(proxy).map((f) => f.value), () => _tick.value++);
248
248
  return proxy;
249
249
  }
250
- exports.newObjectState = newObjectState;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newValueFieldState = void 0;
3
+ exports.newValueFieldState = newValueFieldState;
4
4
  const is_plain_object_1 = require("is-plain-object");
5
5
  const mobx_1 = require("mobx");
6
6
  const proxies_1 = require("../proxies");
@@ -183,7 +183,6 @@ function newValueFieldState(parentCopy, parentInstance, parentState, key, rules,
183
183
  }
184
184
  return field;
185
185
  }
186
- exports.newValueFieldState = newValueFieldState;
187
186
  /**
188
187
  * Returns a proxy that looks exactly like the original `field`, in terms of valid/touched/errors/etc., but
189
188
  * has any methods that use `V` overridden to use be `V2`.
@@ -1,3 +1,4 @@
1
- declare const _default: import("@storybook/types").ComponentAnnotations<import("@storybook/react/dist/types-0fc72a6d").R, import("@storybook/types").Args>;
1
+ import { Meta } from "@storybook/react";
2
+ declare const _default: Meta;
2
3
  export default _default;
3
4
  export declare function AppExample(): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppExample = void 0;
3
+ exports.AppExample = AppExample;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const FormStateApp_1 = require("./FormStateApp");
6
6
  exports.default = {
@@ -10,4 +10,3 @@ exports.default = {
10
10
  function AppExample() {
11
11
  return (0, jsx_runtime_1.jsx)(FormStateApp_1.FormStateApp, {});
12
12
  }
13
- exports.AppExample = AppExample;
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export { ObjectConfig } from "./config";
2
1
  export { f } from "./configBuilders";
3
- export { FragmentField } from "./fields/fragmentField";
4
- export { ListFieldState } from "./fields/listField";
5
- export { Fragment, ObjectState, createObjectState, fragment } from "./fields/objectField";
6
- export { FieldState, ValueAdapter } from "./fields/valueField";
7
- export { Rule, required } from "./rules";
2
+ export { type FragmentField } from "./fields/fragmentField";
3
+ export { type ListFieldState } from "./fields/listField";
4
+ export { createObjectState, type Fragment, type ObjectState, type fragment } from "./fields/objectField";
5
+ export { type FieldState, type ValueAdapter } from "./fields/valueField";
6
+ export { required, type Rule } from "./rules";
8
7
  export { useFormState } from "./useFormState";
9
8
  export { useFormStates } from "./useFormStates";
9
+ export { type ObjectConfig } from "./config";
package/dist/index.js CHANGED
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useFormStates = exports.useFormState = exports.required = exports.fragment = exports.createObjectState = exports.f = void 0;
3
+ exports.useFormStates = exports.useFormState = exports.required = exports.createObjectState = exports.f = void 0;
4
4
  var configBuilders_1 = require("./configBuilders");
5
5
  Object.defineProperty(exports, "f", { enumerable: true, get: function () { return configBuilders_1.f; } });
6
6
  var objectField_1 = require("./fields/objectField");
7
7
  Object.defineProperty(exports, "createObjectState", { enumerable: true, get: function () { return objectField_1.createObjectState; } });
8
- Object.defineProperty(exports, "fragment", { enumerable: true, get: function () { return objectField_1.fragment; } });
9
8
  var rules_1 = require("./rules");
10
9
  Object.defineProperty(exports, "required", { enumerable: true, get: function () { return rules_1.required; } });
11
10
  var useFormState_1 = require("./useFormState");
package/dist/proxies.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newDelegateProxy = void 0;
3
+ exports.newDelegateProxy = newDelegateProxy;
4
4
  /**
5
5
  * Creates a new combined object with keys in `overrides` taking precedence, and then
6
6
  * any other keys falling back to `delegate`.
@@ -18,4 +18,3 @@ function newDelegateProxy(delegate, overrides) {
18
18
  },
19
19
  });
20
20
  }
21
- exports.newDelegateProxy = newDelegateProxy;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useFormState = void 0;
3
+ exports.useFormState = useFormState;
4
4
  const is_plain_object_1 = require("is-plain-object");
5
5
  const react_1 = require("react");
6
6
  const objectField_1 = require("./fields/objectField");
@@ -118,7 +118,6 @@ function useFormState(opts) {
118
118
  }, [form, readOnly, loading]);
119
119
  return form;
120
120
  }
121
- exports.useFormState = useFormState;
122
121
  function setLoading(form, opts) {
123
122
  const { loading, init } = opts;
124
123
  if (loading !== undefined) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useFormStates = void 0;
3
+ exports.useFormStates = useFormStates;
4
4
  const react_1 = require("react");
5
5
  const objectField_1 = require("./fields/objectField");
6
6
  const utils_1 = require("./utils");
@@ -95,7 +95,6 @@ function useFormStates(opts) {
95
95
  [objectStateCache, config]);
96
96
  return { getFormState };
97
97
  }
98
- exports.useFormStates = useFormStates;
99
98
  // If the user's autoSave hook makes some last-minute `.set` calls to sneak
100
99
  // in some business logic right before their GraphQL mutation call, ignore it
101
100
  // so that we don't infinite loop.
package/dist/utils.js CHANGED
@@ -1,17 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deepClone = exports.hasToJSON = exports.areEqual = exports.isEmpty = exports.isNotUndefined = exports.pickFields = exports.isQuery = exports.isInput = exports.initValue = exports.assertNever = exports.fail = void 0;
3
+ exports.fail = fail;
4
+ exports.assertNever = assertNever;
5
+ exports.initValue = initValue;
6
+ exports.isInput = isInput;
7
+ exports.isQuery = isQuery;
8
+ exports.pickFields = pickFields;
9
+ exports.isNotUndefined = isNotUndefined;
10
+ exports.isEmpty = isEmpty;
11
+ exports.areEqual = areEqual;
12
+ exports.hasToJSON = hasToJSON;
13
+ exports.deepClone = deepClone;
4
14
  const is_plain_object_1 = require("is-plain-object");
5
15
  const mobx_1 = require("mobx");
6
16
  const deepEquals_1 = require("./fields/deepEquals");
7
17
  function fail(message) {
8
18
  throw new Error(message || "Failed");
9
19
  }
10
- exports.fail = fail;
11
20
  function assertNever(x) {
12
21
  throw new Error("Unexpected object: " + x);
13
22
  }
14
- exports.assertNever = assertNever;
15
23
  /** Introspects the `init` prop to see if it has a `map` function/etc. and returns the form value. */
16
24
  function initValue(config, init) {
17
25
  let value;
@@ -30,15 +38,12 @@ function initValue(config, init) {
30
38
  // Given our form config, pick out only the subset of fields out of `value` (unless it's a mobx class)
31
39
  return pickFields(config, value !== null && value !== void 0 ? value : {});
32
40
  }
33
- exports.initValue = initValue;
34
41
  function isInput(init) {
35
42
  return !!init && typeof init === "object" && "input" in init;
36
43
  }
37
- exports.isInput = isInput;
38
44
  function isQuery(init) {
39
45
  return !!init && typeof init === "object" && "query" in init && "map" in init;
40
46
  }
41
- exports.isQuery = isQuery;
42
47
  /**
43
48
  * Picks ony fields out of `instance` that are in the `formConfig`.
44
49
  *
@@ -85,15 +90,12 @@ function pickFields(formConfig, instance) {
85
90
  }
86
91
  }));
87
92
  }
88
- exports.pickFields = pickFields;
89
93
  function isNotUndefined(value) {
90
94
  return value !== undefined;
91
95
  }
92
- exports.isNotUndefined = isNotUndefined;
93
96
  function isEmpty(value) {
94
97
  return value === undefined || value === null || value === "";
95
98
  }
96
- exports.isEmpty = isEmpty;
97
99
  /**
98
100
  * An equals that does deep-ish equality.
99
101
  *
@@ -122,11 +124,9 @@ function areEqual(a, b, strictOrder) {
122
124
  }
123
125
  return a === b;
124
126
  }
125
- exports.areEqual = areEqual;
126
127
  function hasToJSON(o) {
127
128
  return !!(o && typeof o === "object" && "toJSON" in o);
128
129
  }
129
- exports.hasToJSON = hasToJSON;
130
130
  /** Make a clone of `obj`, but only recurse into POJOs and Arrays...and stores. */
131
131
  function deepClone(obj, map = new WeakMap()) {
132
132
  if (obj && typeof obj === "object" && ((0, is_plain_object_1.isPlainObject)(obj) || Array.isArray(obj) || (0, mobx_1.isObservable)(obj))) {
@@ -141,7 +141,6 @@ function deepClone(obj, map = new WeakMap()) {
141
141
  return obj;
142
142
  }
143
143
  }
144
- exports.deepClone = deepClone;
145
144
  /** Returns all property names, including mobx computeds (non-enumerable) & inherited. */
146
145
  function getAllPropertyNames(obj) {
147
146
  const proto = Object.getPrototypeOf(obj);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homebound/form-state",
3
- "version": "2.25.1",
3
+ "version": "2.25.2",
4
4
  "author": "Homebound",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -37,30 +37,24 @@
37
37
  "react": ">=16"
38
38
  },
39
39
  "devDependencies": {
40
- "@babel/core": "^7.13.1",
41
- "@babel/preset-env": "^7.22.15",
42
- "@babel/preset-react": "^7.22.15",
43
- "@babel/preset-typescript": "^7.22.15",
44
- "@homebound/rtl-utils": "2.65.2",
40
+ "@homebound/rtl-utils": "2.66.2",
45
41
  "@semantic-release/exec": "^6.0.3",
46
42
  "@semantic-release/git": "^10.0.1",
47
- "@storybook/addon-essentials": "^7.6.5",
48
- "@storybook/addon-links": "^7.6.5",
49
- "@storybook/addons": "^7.6.5",
50
- "@storybook/react": "^7.6.5",
51
- "@storybook/react-webpack5": "^7.6.5",
52
- "@testing-library/dom": "^9.3.3",
53
- "@testing-library/jest-dom": "^6.1.5",
54
- "@testing-library/react": "^14.1.2",
55
- "@tsconfig/recommended": "^1.0.2",
56
- "@types/jest": "^29.5.4",
57
- "@types/react": "^18.2.21",
58
- "@types/react-dom": "^18.2.7",
43
+ "@storybook/addon-essentials": "^8.3.5",
44
+ "@storybook/addon-links": "^8.3.5",
45
+ "@storybook/react": "^8.3.5",
46
+ "@storybook/react-vite": "^8.3.5",
47
+ "@storybook/types": "^8.3.5",
48
+ "@testing-library/dom": "^10.4.0",
49
+ "@testing-library/jest-dom": "^6.6.2",
50
+ "@testing-library/react": "^16.0.1",
51
+ "@tsconfig/recommended": "^1.0.7",
52
+ "@types/jest": "^29.5.13",
53
+ "@types/react": "^18.3.11",
54
+ "@types/react-dom": "^18.3.1",
59
55
  "@typescript-eslint/eslint-plugin": "^4.17.0",
60
56
  "@typescript-eslint/parser": "^4.17.0",
61
- "babel-eslint": "^10.1.0",
62
- "babel-loader": "^8.2.2",
63
- "conventional-changelog-conventionalcommits": "^4.5.0",
57
+ "conventional-changelog-conventionalcommits": "^8.0.0",
64
58
  "eslint": "^7.21.0",
65
59
  "eslint-config-prettier": "^8.1.0",
66
60
  "eslint-config-react-app": "^6.0.0",
@@ -71,22 +65,24 @@
71
65
  "eslint-plugin-react-hooks": "^4.2.0",
72
66
  "husky": "^3.1.0",
73
67
  "jest": "^29.7.0",
74
- "jest-environment-jsdom": "^29.6.4",
75
- "lint-staged": "^14.0.1",
76
- "mobx": "^6.10.2",
77
- "mobx-react": "^9.0.1",
78
- "prettier": "2.8.8",
79
- "prettier-plugin-organize-imports": "^3.2.3",
80
- "react": "^18.2.0",
81
- "react-dom": "^18.2.0",
82
- "semantic-release": "^22.0.12",
83
- "storybook": "^7.6.5",
84
- "ts-jest": "^29.1.1",
68
+ "jest-environment-jsdom": "^29.7.0",
69
+ "lint-staged": "^15.2.10",
70
+ "mobx": "^6.13.5",
71
+ "mobx-react": "^9.1.1",
72
+ "prettier": "3.3.3",
73
+ "prettier-plugin-organize-imports": "^4.1.0",
74
+ "react": "^18.3.1",
75
+ "react-dom": "^18.3.1",
76
+ "semantic-release": "^24.1.2",
77
+ "storybook": "^8.3.5",
78
+ "ts-jest": "^29.2.5",
85
79
  "ts-node": "^10.9.2",
86
- "ts-patch": "^3.1.1",
87
- "tslib": "^2.6.2",
88
- "typescript": "^5.3.3",
89
- "typescript-transform-paths": "^3.4.6"
80
+ "ts-patch": "^3.2.1",
81
+ "tslib": "^2.8.0",
82
+ "typescript": "5.5.4",
83
+ "typescript-transform-paths": "^3.5.1",
84
+ "vite": "^5.4.9",
85
+ "vite-tsconfig-paths": "^5.0.1"
90
86
  },
91
87
  "packageManager": "yarn@3.6.3"
92
88
  }