@dynamic-field-kit/react 1.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.
@@ -0,0 +1,30 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { FieldTypeKey as FieldTypeKey$1, FieldDescription, Properties } from '@dynamic-field-kit/core';
3
+
4
+ interface FieldTypeMap {
5
+ }
6
+ type FieldTypeKey = keyof FieldTypeMap | string;
7
+
8
+ interface Props$2<T extends FieldTypeKey$1> {
9
+ type: T;
10
+ value?: any;
11
+ onChange?: (value: any) => void;
12
+ label?: string;
13
+ }
14
+ declare const DynamicInput: <T extends FieldTypeKey$1>({ type, value, onChange, label, }: Props$2<T>) => react_jsx_runtime.JSX.Element;
15
+
16
+ interface Props$1 {
17
+ fieldDescription: FieldDescription;
18
+ renderInfos: Properties;
19
+ onValueChangeField: (value: any, key: string) => void;
20
+ }
21
+ declare const FieldInput: ({ fieldDescription, renderInfos, onValueChangeField, }: Props$1) => react_jsx_runtime.JSX.Element;
22
+
23
+ interface Props {
24
+ fieldDescriptions: FieldDescription[];
25
+ properties?: Properties;
26
+ onChange?: (data: Properties) => void;
27
+ }
28
+ declare const MultiFieldInput: ({ fieldDescriptions, properties, onChange, }: Props) => react_jsx_runtime.JSX.Element;
29
+
30
+ export { DynamicInput, FieldInput, type FieldTypeKey, type FieldTypeMap, MultiFieldInput };
@@ -0,0 +1,30 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { FieldTypeKey as FieldTypeKey$1, FieldDescription, Properties } from '@dynamic-field-kit/core';
3
+
4
+ interface FieldTypeMap {
5
+ }
6
+ type FieldTypeKey = keyof FieldTypeMap | string;
7
+
8
+ interface Props$2<T extends FieldTypeKey$1> {
9
+ type: T;
10
+ value?: any;
11
+ onChange?: (value: any) => void;
12
+ label?: string;
13
+ }
14
+ declare const DynamicInput: <T extends FieldTypeKey$1>({ type, value, onChange, label, }: Props$2<T>) => react_jsx_runtime.JSX.Element;
15
+
16
+ interface Props$1 {
17
+ fieldDescription: FieldDescription;
18
+ renderInfos: Properties;
19
+ onValueChangeField: (value: any, key: string) => void;
20
+ }
21
+ declare const FieldInput: ({ fieldDescription, renderInfos, onValueChangeField, }: Props$1) => react_jsx_runtime.JSX.Element;
22
+
23
+ interface Props {
24
+ fieldDescriptions: FieldDescription[];
25
+ properties?: Properties;
26
+ onChange?: (data: Properties) => void;
27
+ }
28
+ declare const MultiFieldInput: ({ fieldDescriptions, properties, onChange, }: Props) => react_jsx_runtime.JSX.Element;
29
+
30
+ export { DynamicInput, FieldInput, type FieldTypeKey, type FieldTypeMap, MultiFieldInput };
package/dist/index.js ADDED
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ DynamicInput: () => DynamicInput_default,
24
+ FieldInput: () => FieldInput_default,
25
+ MultiFieldInput: () => MultiFieldInput_default
26
+ });
27
+ module.exports = __toCommonJS(index_exports);
28
+
29
+ // src/DynamicInput.tsx
30
+ var import_core = require("@dynamic-field-kit/core");
31
+ var import_jsx_runtime = require("react/jsx-runtime");
32
+ var DynamicInput = ({
33
+ type,
34
+ value,
35
+ onChange,
36
+ label
37
+ }) => {
38
+ const Renderer = import_core.fieldRegistry.get(type);
39
+ if (!Renderer) {
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
41
+ "Unknown field type: ",
42
+ type
43
+ ] });
44
+ }
45
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
+ Renderer,
47
+ {
48
+ value,
49
+ onValueChange: onChange,
50
+ label
51
+ }
52
+ );
53
+ };
54
+ var DynamicInput_default = DynamicInput;
55
+
56
+ // src/FieldInput.tsx
57
+ var import_jsx_runtime2 = require("react/jsx-runtime");
58
+ var FieldInput = ({
59
+ fieldDescription,
60
+ renderInfos,
61
+ onValueChangeField
62
+ }) => {
63
+ const { name, type, label } = fieldDescription;
64
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
65
+ DynamicInput_default,
66
+ {
67
+ type,
68
+ label,
69
+ value: renderInfos[name],
70
+ onChange: (v) => onValueChangeField(v, name)
71
+ }
72
+ );
73
+ };
74
+ var FieldInput_default = FieldInput;
75
+
76
+ // src/MultiFieldInput.tsx
77
+ var import_react = require("react");
78
+ var import_jsx_runtime3 = require("react/jsx-runtime");
79
+ var MultiFieldInput = ({
80
+ fieldDescriptions,
81
+ properties,
82
+ onChange
83
+ }) => {
84
+ const [data, setData] = (0, import_react.useState)({});
85
+ (0, import_react.useEffect)(() => {
86
+ if (properties) setData(properties);
87
+ }, [properties]);
88
+ const visibleFields = (0, import_react.useMemo)(
89
+ () => fieldDescriptions.filter(
90
+ (f) => !f.appearCondition || f.appearCondition(data)
91
+ ),
92
+ [fieldDescriptions, data]
93
+ );
94
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: visibleFields.map((f) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
95
+ FieldInput_default,
96
+ {
97
+ fieldDescription: f,
98
+ renderInfos: data,
99
+ onValueChangeField: (value, key) => {
100
+ const next = { ...data, [key]: value };
101
+ setData(next);
102
+ onChange?.(next);
103
+ }
104
+ }
105
+ ) }, f.name)) });
106
+ };
107
+ var MultiFieldInput_default = MultiFieldInput;
108
+ // Annotate the CommonJS export names for ESM import in node:
109
+ 0 && (module.exports = {
110
+ DynamicInput,
111
+ FieldInput,
112
+ MultiFieldInput
113
+ });
114
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/DynamicInput.tsx","../src/FieldInput.tsx","../src/MultiFieldInput.tsx"],"sourcesContent":["export * from \"./types\"\r\nexport { default as DynamicInput } from \"./DynamicInput\"\r\nexport { default as FieldInput } from \"./FieldInput\"\r\nexport { default as MultiFieldInput } from \"./MultiFieldInput\"\r\n","import { fieldRegistry, FieldTypeKey } from \"@dynamic-field-kit/core\"\r\n\r\ninterface Props<T extends FieldTypeKey> {\r\n type: T\r\n value?: any\r\n onChange?: (value: any) => void\r\n label?: string\r\n}\r\n\r\nconst DynamicInput = <T extends FieldTypeKey>({\r\n type,\r\n value,\r\n onChange,\r\n label,\r\n}: Props<T>) => {\r\n const Renderer = fieldRegistry.get(type)\r\n\r\n if (!Renderer) {\r\n return <div>Unknown field type: {type}</div>\r\n }\r\n\r\n return (\r\n <Renderer\r\n value={value}\r\n onValueChange={onChange}\r\n label={label}\r\n />\r\n )\r\n}\r\n\r\nexport default DynamicInput\r\n","import { FieldDescription, Properties } from \"@dynamic-field-kit/core\"\r\nimport DynamicInput from \"./DynamicInput\"\r\n\r\ninterface Props {\r\n fieldDescription: FieldDescription\r\n renderInfos: Properties\r\n onValueChangeField: (value: any, key: string) => void\r\n}\r\n\r\nconst FieldInput = ({\r\n fieldDescription,\r\n renderInfos,\r\n onValueChangeField,\r\n}: Props) => {\r\n const { name, type, label } = fieldDescription\r\n\r\n return (\r\n <DynamicInput\r\n type={type}\r\n label={label}\r\n value={renderInfos[name]}\r\n onChange={(v) => onValueChangeField(v, name)}\r\n />\r\n )\r\n}\r\n\r\nexport default FieldInput\r\n","import { FieldDescription, Properties } from \"@dynamic-field-kit/core\"\r\nimport { Fragment, useEffect, useMemo, useState } from \"react\"\r\nimport FieldInput from \"./FieldInput\"\r\n\r\ninterface Props {\r\n fieldDescriptions: FieldDescription[]\r\n properties?: Properties\r\n onChange?: (data: Properties) => void\r\n}\r\n\r\nconst MultiFieldInput = ({\r\n fieldDescriptions,\r\n properties,\r\n onChange,\r\n}: Props) => {\r\n const [data, setData] = useState<Properties>({})\r\n\r\n useEffect(() => {\r\n if (properties) setData(properties)\r\n }, [properties])\r\n\r\n const visibleFields = useMemo(\r\n () =>\r\n fieldDescriptions.filter(\r\n (f) => !f.appearCondition || f.appearCondition(data)\r\n ),\r\n [fieldDescriptions, data]\r\n )\r\n\r\n return (\r\n <>\r\n {visibleFields.map((f) => (\r\n <Fragment key={f.name}>\r\n <FieldInput\r\n fieldDescription={f}\r\n renderInfos={data}\r\n onValueChangeField={(value, key) => {\r\n const next = { ...data, [key]: value }\r\n setData(next)\r\n onChange?.(next)\r\n }}\r\n />\r\n </Fragment>\r\n ))}\r\n </>\r\n )\r\n}\r\n\r\nexport default MultiFieldInput\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,kBAA4C;AAkB7B;AATf,IAAM,eAAe,CAAyB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAgB;AACZ,QAAM,WAAW,0BAAc,IAAI,IAAI;AAEvC,MAAI,CAAC,UAAU;AACX,WAAO,6CAAC,SAAI;AAAA;AAAA,MAAqB;AAAA,OAAK;AAAA,EAC1C;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA,eAAe;AAAA,MACf;AAAA;AAAA,EACJ;AAER;AAEA,IAAO,uBAAQ;;;ACbX,IAAAA,sBAAA;AARJ,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,OAAO,YAAY,IAAI;AAAA,MACvB,UAAU,CAAC,MAAM,mBAAmB,GAAG,IAAI;AAAA;AAAA,EAC7C;AAEJ;AAEA,IAAO,qBAAQ;;;ACzBf,mBAAuD;AA6BnD,IAAAC,sBAAA;AApBJ,IAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAqB,CAAC,CAAC;AAE/C,8BAAU,MAAM;AACd,QAAI,WAAY,SAAQ,UAAU;AAAA,EACpC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,oBAAgB;AAAA,IACpB,MACE,kBAAkB;AAAA,MAChB,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,gBAAgB,IAAI;AAAA,IACrD;AAAA,IACF,CAAC,mBAAmB,IAAI;AAAA,EAC1B;AAEA,SACE,6EACG,wBAAc,IAAI,CAAC,MAClB,6CAAC,yBACC;AAAA,IAAC;AAAA;AAAA,MACC,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,oBAAoB,CAAC,OAAO,QAAQ;AAClC,cAAM,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AACrC,gBAAQ,IAAI;AACZ,mBAAW,IAAI;AAAA,MACjB;AAAA;AAAA,EACF,KATa,EAAE,IAUjB,CACD,GACH;AAEJ;AAEA,IAAO,0BAAQ;","names":["import_jsx_runtime","import_jsx_runtime"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,85 @@
1
+ // src/DynamicInput.tsx
2
+ import { fieldRegistry } from "@dynamic-field-kit/core";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ var DynamicInput = ({
5
+ type,
6
+ value,
7
+ onChange,
8
+ label
9
+ }) => {
10
+ const Renderer = fieldRegistry.get(type);
11
+ if (!Renderer) {
12
+ return /* @__PURE__ */ jsxs("div", { children: [
13
+ "Unknown field type: ",
14
+ type
15
+ ] });
16
+ }
17
+ return /* @__PURE__ */ jsx(
18
+ Renderer,
19
+ {
20
+ value,
21
+ onValueChange: onChange,
22
+ label
23
+ }
24
+ );
25
+ };
26
+ var DynamicInput_default = DynamicInput;
27
+
28
+ // src/FieldInput.tsx
29
+ import { jsx as jsx2 } from "react/jsx-runtime";
30
+ var FieldInput = ({
31
+ fieldDescription,
32
+ renderInfos,
33
+ onValueChangeField
34
+ }) => {
35
+ const { name, type, label } = fieldDescription;
36
+ return /* @__PURE__ */ jsx2(
37
+ DynamicInput_default,
38
+ {
39
+ type,
40
+ label,
41
+ value: renderInfos[name],
42
+ onChange: (v) => onValueChangeField(v, name)
43
+ }
44
+ );
45
+ };
46
+ var FieldInput_default = FieldInput;
47
+
48
+ // src/MultiFieldInput.tsx
49
+ import { Fragment, useEffect, useMemo, useState } from "react";
50
+ import { Fragment as Fragment2, jsx as jsx3 } from "react/jsx-runtime";
51
+ var MultiFieldInput = ({
52
+ fieldDescriptions,
53
+ properties,
54
+ onChange
55
+ }) => {
56
+ const [data, setData] = useState({});
57
+ useEffect(() => {
58
+ if (properties) setData(properties);
59
+ }, [properties]);
60
+ const visibleFields = useMemo(
61
+ () => fieldDescriptions.filter(
62
+ (f) => !f.appearCondition || f.appearCondition(data)
63
+ ),
64
+ [fieldDescriptions, data]
65
+ );
66
+ return /* @__PURE__ */ jsx3(Fragment2, { children: visibleFields.map((f) => /* @__PURE__ */ jsx3(Fragment, { children: /* @__PURE__ */ jsx3(
67
+ FieldInput_default,
68
+ {
69
+ fieldDescription: f,
70
+ renderInfos: data,
71
+ onValueChangeField: (value, key) => {
72
+ const next = { ...data, [key]: value };
73
+ setData(next);
74
+ onChange?.(next);
75
+ }
76
+ }
77
+ ) }, f.name)) });
78
+ };
79
+ var MultiFieldInput_default = MultiFieldInput;
80
+ export {
81
+ DynamicInput_default as DynamicInput,
82
+ FieldInput_default as FieldInput,
83
+ MultiFieldInput_default as MultiFieldInput
84
+ };
85
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/DynamicInput.tsx","../src/FieldInput.tsx","../src/MultiFieldInput.tsx"],"sourcesContent":["import { fieldRegistry, FieldTypeKey } from \"@dynamic-field-kit/core\"\r\n\r\ninterface Props<T extends FieldTypeKey> {\r\n type: T\r\n value?: any\r\n onChange?: (value: any) => void\r\n label?: string\r\n}\r\n\r\nconst DynamicInput = <T extends FieldTypeKey>({\r\n type,\r\n value,\r\n onChange,\r\n label,\r\n}: Props<T>) => {\r\n const Renderer = fieldRegistry.get(type)\r\n\r\n if (!Renderer) {\r\n return <div>Unknown field type: {type}</div>\r\n }\r\n\r\n return (\r\n <Renderer\r\n value={value}\r\n onValueChange={onChange}\r\n label={label}\r\n />\r\n )\r\n}\r\n\r\nexport default DynamicInput\r\n","import { FieldDescription, Properties } from \"@dynamic-field-kit/core\"\r\nimport DynamicInput from \"./DynamicInput\"\r\n\r\ninterface Props {\r\n fieldDescription: FieldDescription\r\n renderInfos: Properties\r\n onValueChangeField: (value: any, key: string) => void\r\n}\r\n\r\nconst FieldInput = ({\r\n fieldDescription,\r\n renderInfos,\r\n onValueChangeField,\r\n}: Props) => {\r\n const { name, type, label } = fieldDescription\r\n\r\n return (\r\n <DynamicInput\r\n type={type}\r\n label={label}\r\n value={renderInfos[name]}\r\n onChange={(v) => onValueChangeField(v, name)}\r\n />\r\n )\r\n}\r\n\r\nexport default FieldInput\r\n","import { FieldDescription, Properties } from \"@dynamic-field-kit/core\"\r\nimport { Fragment, useEffect, useMemo, useState } from \"react\"\r\nimport FieldInput from \"./FieldInput\"\r\n\r\ninterface Props {\r\n fieldDescriptions: FieldDescription[]\r\n properties?: Properties\r\n onChange?: (data: Properties) => void\r\n}\r\n\r\nconst MultiFieldInput = ({\r\n fieldDescriptions,\r\n properties,\r\n onChange,\r\n}: Props) => {\r\n const [data, setData] = useState<Properties>({})\r\n\r\n useEffect(() => {\r\n if (properties) setData(properties)\r\n }, [properties])\r\n\r\n const visibleFields = useMemo(\r\n () =>\r\n fieldDescriptions.filter(\r\n (f) => !f.appearCondition || f.appearCondition(data)\r\n ),\r\n [fieldDescriptions, data]\r\n )\r\n\r\n return (\r\n <>\r\n {visibleFields.map((f) => (\r\n <Fragment key={f.name}>\r\n <FieldInput\r\n fieldDescription={f}\r\n renderInfos={data}\r\n onValueChangeField={(value, key) => {\r\n const next = { ...data, [key]: value }\r\n setData(next)\r\n onChange?.(next)\r\n }}\r\n />\r\n </Fragment>\r\n ))}\r\n </>\r\n )\r\n}\r\n\r\nexport default MultiFieldInput\r\n"],"mappings":";AAAA,SAAS,qBAAmC;AAkB7B,SAIP,KAJO;AATf,IAAM,eAAe,CAAyB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAgB;AACZ,QAAM,WAAW,cAAc,IAAI,IAAI;AAEvC,MAAI,CAAC,UAAU;AACX,WAAO,qBAAC,SAAI;AAAA;AAAA,MAAqB;AAAA,OAAK;AAAA,EAC1C;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA,eAAe;AAAA,MACf;AAAA;AAAA,EACJ;AAER;AAEA,IAAO,uBAAQ;;;ACbX,gBAAAA,YAAA;AARJ,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAE9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,OAAO,YAAY,IAAI;AAAA,MACvB,UAAU,CAAC,MAAM,mBAAmB,GAAG,IAAI;AAAA;AAAA,EAC7C;AAEJ;AAEA,IAAO,qBAAQ;;;ACzBf,SAAS,UAAU,WAAW,SAAS,gBAAgB;AA6BnD,qBAAAC,WAGM,OAAAC,YAHN;AApBJ,IAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,QAAM,CAAC,MAAM,OAAO,IAAI,SAAqB,CAAC,CAAC;AAE/C,YAAU,MAAM;AACd,QAAI,WAAY,SAAQ,UAAU;AAAA,EACpC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,gBAAgB;AAAA,IACpB,MACE,kBAAkB;AAAA,MAChB,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,gBAAgB,IAAI;AAAA,IACrD;AAAA,IACF,CAAC,mBAAmB,IAAI;AAAA,EAC1B;AAEA,SACE,gBAAAA,KAAAD,WAAA,EACG,wBAAc,IAAI,CAAC,MAClB,gBAAAC,KAAC,YACC,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,oBAAoB,CAAC,OAAO,QAAQ;AAClC,cAAM,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AACrC,gBAAQ,IAAI;AACZ,mBAAW,IAAI;AAAA,MACjB;AAAA;AAAA,EACF,KATa,EAAE,IAUjB,CACD,GACH;AAEJ;AAEA,IAAO,0BAAQ;","names":["jsx","Fragment","jsx"]}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@dynamic-field-kit/react",
3
+ "version": "1.0.0",
4
+ "description": "React renderer for dynamic-field-kit",
5
+ "license": "MIT",
6
+ "main": "dist/index.cjs",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "sideEffects": false,
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "peerDependencies": {
14
+ "react": ">=17"
15
+ },
16
+ "dependencies": {
17
+ "@dynamic-field-kit/core": "^1.0.0"
18
+ },
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js",
23
+ "require": "./dist/index.cjs"
24
+ }
25
+ },
26
+ "scripts": {
27
+ "build": "tsup",
28
+ "clean": "rm -rf dist"
29
+ }
30
+ }