@plaidev/karte-action-sdk 1.1.270-29177657.a375e44e → 1.1.270-29270413.6a2b1dc5c

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.
Files changed (132) hide show
  1. package/dist/action.d.ts +0 -1
  2. package/dist/actionEvent.d.ts +0 -1
  3. package/dist/components/index.d.ts +0 -1
  4. package/dist/components-flex/avatar/types.d.ts +0 -1
  5. package/dist/components-flex/brand-kit.d.ts +6 -0
  6. package/dist/components-flex/button/types.d.ts +0 -3
  7. package/dist/components-flex/button-outlined/types.d.ts +0 -3
  8. package/dist/components-flex/button-text/types.d.ts +0 -3
  9. package/dist/components-flex/embed/types.d.ts +7 -0
  10. package/dist/components-flex/form/styles.d.ts +7 -0
  11. package/dist/components-flex/form/types.d.ts +131 -0
  12. package/dist/components-flex/form.d.ts +122 -0
  13. package/dist/components-flex/layout/types.d.ts +1 -0
  14. package/dist/components-flex/modal/types.d.ts +2 -2
  15. package/dist/components-flex/props.d.ts +5 -1
  16. package/dist/components-flex/text/types.d.ts +0 -3
  17. package/dist/components-flex/text-link/types.d.ts +0 -3
  18. package/dist/components-flex/utils/obj-to-style.d.ts +1 -1
  19. package/dist/components-flex/variants.d.ts +0 -15
  20. package/dist/components-flex/youtube/types.d.ts +0 -1
  21. package/dist/constants.d.ts +0 -1
  22. package/dist/functions.d.ts +4 -0
  23. package/dist/hooks/useInjectCustomizeCss.d.ts +1 -1
  24. package/dist/hooks/useText.d.ts +1 -1
  25. package/dist/hydrate/action.d.ts +0 -1
  26. package/dist/hydrate/actionEvent.d.ts +0 -1
  27. package/dist/hydrate/components/index.d.ts +0 -1
  28. package/dist/hydrate/components-flex/avatar/types.d.ts +0 -1
  29. package/dist/hydrate/components-flex/brand-kit.d.ts +6 -0
  30. package/dist/hydrate/components-flex/button/types.d.ts +0 -3
  31. package/dist/hydrate/components-flex/button-outlined/types.d.ts +0 -3
  32. package/dist/hydrate/components-flex/button-text/types.d.ts +0 -3
  33. package/dist/hydrate/components-flex/embed/types.d.ts +7 -0
  34. package/dist/hydrate/components-flex/form/styles.d.ts +7 -0
  35. package/dist/hydrate/components-flex/form/types.d.ts +131 -0
  36. package/dist/hydrate/components-flex/form.d.ts +122 -0
  37. package/dist/hydrate/components-flex/layout/types.d.ts +1 -0
  38. package/dist/hydrate/components-flex/modal/types.d.ts +2 -2
  39. package/dist/hydrate/components-flex/props.d.ts +5 -1
  40. package/dist/hydrate/components-flex/text/types.d.ts +0 -3
  41. package/dist/hydrate/components-flex/text-link/types.d.ts +0 -3
  42. package/dist/hydrate/components-flex/utils/obj-to-style.d.ts +1 -1
  43. package/dist/hydrate/components-flex/variants.d.ts +0 -15
  44. package/dist/hydrate/components-flex/youtube/types.d.ts +0 -1
  45. package/dist/hydrate/constants.d.ts +0 -1
  46. package/dist/hydrate/functions.d.ts +4 -0
  47. package/dist/hydrate/hooks/useInjectCustomizeCss.d.ts +1 -1
  48. package/dist/hydrate/hooks/useText.d.ts +1 -1
  49. package/dist/hydrate/index.d.ts +3 -2
  50. package/dist/hydrate/index.es.js +3547 -947
  51. package/dist/hydrate/index.svelte5.d.ts +13 -1
  52. package/dist/hydrate/modal.d.ts +0 -2
  53. package/dist/hydrate/modal.svelte5.d.ts +0 -2
  54. package/dist/hydrate/prop.d.ts +14 -0
  55. package/dist/hydrate/stores.d.ts +12 -0
  56. package/dist/hydrate/types.d.ts +0 -1
  57. package/dist/icons.d.ts +0 -3
  58. package/dist/index.es.d.ts +3 -2
  59. package/dist/index.es.js +3375 -997
  60. package/dist/modal.d.ts +0 -2
  61. package/dist/modal.svelte5.d.ts +0 -2
  62. package/dist/prop.d.ts +14 -0
  63. package/dist/stores.d.ts +12 -0
  64. package/dist/svelte5/action.d.ts +0 -1
  65. package/dist/svelte5/actionEvent.d.ts +0 -1
  66. package/dist/svelte5/components/index.d.ts +0 -1
  67. package/dist/svelte5/components-flex/avatar/types.d.ts +0 -1
  68. package/dist/svelte5/components-flex/brand-kit.d.ts +6 -0
  69. package/dist/svelte5/components-flex/button/types.d.ts +0 -3
  70. package/dist/svelte5/components-flex/button-outlined/types.d.ts +0 -3
  71. package/dist/svelte5/components-flex/button-text/types.d.ts +0 -3
  72. package/dist/svelte5/components-flex/embed/types.d.ts +7 -0
  73. package/dist/svelte5/components-flex/form/styles.d.ts +7 -0
  74. package/dist/svelte5/components-flex/form/types.d.ts +131 -0
  75. package/dist/svelte5/components-flex/form.d.ts +122 -0
  76. package/dist/svelte5/components-flex/layout/types.d.ts +1 -0
  77. package/dist/svelte5/components-flex/modal/types.d.ts +2 -2
  78. package/dist/svelte5/components-flex/props.d.ts +5 -1
  79. package/dist/svelte5/components-flex/text/types.d.ts +0 -3
  80. package/dist/svelte5/components-flex/text-link/types.d.ts +0 -3
  81. package/dist/svelte5/components-flex/utils/obj-to-style.d.ts +1 -1
  82. package/dist/svelte5/components-flex/variants.d.ts +0 -15
  83. package/dist/svelte5/components-flex/youtube/types.d.ts +0 -1
  84. package/dist/svelte5/constants.d.ts +0 -1
  85. package/dist/svelte5/functions.d.ts +4 -0
  86. package/dist/svelte5/hooks/useInjectCustomizeCss.d.ts +1 -1
  87. package/dist/svelte5/hooks/useText.d.ts +1 -1
  88. package/dist/svelte5/hydrate/action.d.ts +0 -1
  89. package/dist/svelte5/hydrate/actionEvent.d.ts +0 -1
  90. package/dist/svelte5/hydrate/components/index.d.ts +0 -1
  91. package/dist/svelte5/hydrate/components-flex/avatar/types.d.ts +0 -1
  92. package/dist/svelte5/hydrate/components-flex/brand-kit.d.ts +6 -0
  93. package/dist/svelte5/hydrate/components-flex/button/types.d.ts +0 -3
  94. package/dist/svelte5/hydrate/components-flex/button-outlined/types.d.ts +0 -3
  95. package/dist/svelte5/hydrate/components-flex/button-text/types.d.ts +0 -3
  96. package/dist/svelte5/hydrate/components-flex/embed/types.d.ts +7 -0
  97. package/dist/svelte5/hydrate/components-flex/form/styles.d.ts +7 -0
  98. package/dist/svelte5/hydrate/components-flex/form/types.d.ts +131 -0
  99. package/dist/svelte5/hydrate/components-flex/form.d.ts +122 -0
  100. package/dist/svelte5/hydrate/components-flex/layout/types.d.ts +1 -0
  101. package/dist/svelte5/hydrate/components-flex/modal/types.d.ts +2 -2
  102. package/dist/svelte5/hydrate/components-flex/props.d.ts +5 -1
  103. package/dist/svelte5/hydrate/components-flex/text/types.d.ts +0 -3
  104. package/dist/svelte5/hydrate/components-flex/text-link/types.d.ts +0 -3
  105. package/dist/svelte5/hydrate/components-flex/utils/obj-to-style.d.ts +1 -1
  106. package/dist/svelte5/hydrate/components-flex/variants.d.ts +0 -15
  107. package/dist/svelte5/hydrate/components-flex/youtube/types.d.ts +0 -1
  108. package/dist/svelte5/hydrate/constants.d.ts +0 -1
  109. package/dist/svelte5/hydrate/functions.d.ts +4 -0
  110. package/dist/svelte5/hydrate/hooks/useInjectCustomizeCss.d.ts +1 -1
  111. package/dist/svelte5/hydrate/hooks/useText.d.ts +1 -1
  112. package/dist/svelte5/hydrate/index.es.d.ts +13 -1
  113. package/dist/svelte5/hydrate/index.es.js +1833 -462
  114. package/dist/svelte5/hydrate/modal.d.ts +0 -2
  115. package/dist/svelte5/hydrate/modal.svelte5.d.ts +0 -2
  116. package/dist/svelte5/hydrate/prop.d.ts +14 -0
  117. package/dist/svelte5/hydrate/stores.d.ts +12 -0
  118. package/dist/svelte5/hydrate/types.d.ts +0 -1
  119. package/dist/svelte5/index.es.d.ts +13 -1
  120. package/dist/svelte5/index.es.js +1833 -462
  121. package/dist/svelte5/index.front2.es.js +1947 -544
  122. package/dist/svelte5/index.svelte5.d.ts +13 -1
  123. package/dist/svelte5/modal.d.ts +0 -2
  124. package/dist/svelte5/modal.svelte5.d.ts +0 -2
  125. package/dist/svelte5/prop.d.ts +14 -0
  126. package/dist/svelte5/stores.d.ts +12 -0
  127. package/dist/svelte5/types.d.ts +0 -1
  128. package/dist/templates.cjs.js +13 -6
  129. package/dist/templates.d.ts +0 -5
  130. package/dist/templates.js +13 -6
  131. package/dist/types.d.ts +0 -1
  132. package/package.json +8 -15
@@ -8,7 +8,6 @@ export { onScroll, onTime } from "./utils.js";
8
8
  export type { OnScrollContext, OnScrollFunction, ScrollDirection } from "./utils.js";
9
9
  export { getLogs, getEvents, logger, listenLogger } from "./logger.js";
10
10
  export type { LogLevel, Log, Event } from "./logger.js";
11
- // 以下は互換性のため
12
11
  export { hideOnScroll, hideOnTime, showOnScroll, showOnTime } from "./display-logic.js";
13
12
  export * from "./prop.js";
14
13
  export { showAction, closeAction, loadStyle, applyCss, onShow, onClose, onChangeState, getActionRoot, getCssVariables, show, close, ensureModalRoot, createApp, createFog } from "./modal.svelte5.js";
@@ -18,6 +17,7 @@ export type { CollectionConfig, ActionTableRowRequestConfig, ActionTableRowsRequ
18
17
  export { addChoiceAnswer, addFreeAnswer, removeAnswer, getAnsweredQuestion, getAnsweredQuestionIds, sendAnswer, sendAnswers } from "./form.js";
19
18
  export * as widget from "./widget.js";
20
19
  export { onMount, onDestory, beforeUpdate, afterUpdate, tick, LAYOUT_COMPONENT_NAMES } from "./components/index.js";
20
+ export * from "./components-flex/form.js";
21
21
  export { default as State } from "./components-flex/state/State.svelte.js";
22
22
  export { default as StateItem } from "./components-flex/state/StateItem.svelte.js";
23
23
  export * from "./components-flex/shared/types.js";
@@ -71,6 +71,18 @@ export { default as FlexCountDownValue } from "./components-flex/count-down/Coun
71
71
  export * from "./components-flex/count-down/types.js";
72
72
  export { default as FlexClipCopy } from "./components-flex/clip-copy/ClipCopy.svelte.js";
73
73
  export * from "./components-flex/clip-copy/types.js";
74
+ export { default as FlexEmbed } from "./components-flex/embed/Embed.svelte.js";
75
+ export * from "./components-flex/embed/types.js";
76
+ export { default as FlexForm } from "./components-flex/form/Form.svelte.js";
77
+ export { default as FlexFormField } from "./components-flex/form/FormField.svelte.js";
78
+ export { default as FlexFormInput } from "./components-flex/form/FormInput.svelte.js";
79
+ export { default as FlexFormTextarea } from "./components-flex/form/FormTextarea.svelte.js";
80
+ export { default as FlexFormSelect } from "./components-flex/form/FormSelect.svelte.js";
81
+ export { default as FlexFormCheckboxes } from "./components-flex/form/FormCheckboxes.svelte.js";
82
+ export { default as FlexFormRadios } from "./components-flex/form/FormRadios.svelte.js";
83
+ export { default as FlexFormBoolean } from "./components-flex/form/FormBoolean.svelte.js";
84
+ export { default as FlexFormIdentifyField } from "./components-flex/form/FormIdentifyField.svelte.js";
85
+ export * from "./components-flex/form/types.js";
74
86
  export * from "./components-flex/code/types.js";
75
87
  export * from "./components-flex/brand-kit.js";
76
88
  export * from "./components-flex/shared/styles.js";
@@ -92,7 +92,6 @@ export declare function applyCss(css: string): Promise<HTMLStyleElement>;
92
92
  * @public
93
93
  */
94
94
  export declare function loadStyle(href: string): Promise<void>;
95
- // @internal
96
95
  export declare function getCssVariables(data: {
97
96
  [key: string]: string | number;
98
97
  }): string;
@@ -112,7 +111,6 @@ export declare function createModal<
112
111
  >(App: typeof SvelteComponentTyped, options?: ActionOptions<Props, Variables & ActionVariables, VariablesQuery>): () => void;
113
112
  /** @internal */
114
113
  export declare function ensureActionRoot(useShadow?: boolean): ShadowRoot | HTMLElement;
115
- // -------- The following codes are deprecated --------
116
114
  /**
117
115
  * 非推奨
118
116
  *
@@ -92,7 +92,6 @@ export declare function applyCss(css: string): Promise<HTMLStyleElement>;
92
92
  * @public
93
93
  */
94
94
  export declare function loadStyle(href: string): Promise<void>;
95
- // @internal
96
95
  export declare function getCssVariables(data: {
97
96
  [key: string]: string | number;
98
97
  }): string;
@@ -112,7 +111,6 @@ export declare function createModal<
112
111
  >(App: typeof SvelteComponentTyped, options?: ActionOptions<Props, Variables & ActionVariables, VariablesQuery>): () => void;
113
112
  /** @internal */
114
113
  export declare function ensureActionRoot(useShadow?: boolean): ShadowRoot | HTMLElement;
115
- // -------- The following codes are deprecated --------
116
114
  /**
117
115
  * 非推奨
118
116
  *
@@ -140,6 +140,20 @@ export declare const OnClickOperationOptions: readonly [{
140
140
  readonly type: "TransitState";
141
141
  readonly default: "/";
142
142
  }];
143
+ }, {
144
+ readonly operation: "submitFormFinal";
145
+ readonly args: readonly [{
146
+ readonly name: "state";
147
+ readonly type: "TransitState";
148
+ readonly default: "/";
149
+ }];
150
+ }, {
151
+ readonly operation: "submitFormProgress";
152
+ readonly args: readonly [{
153
+ readonly name: "state";
154
+ readonly type: "TransitState";
155
+ readonly default: "/";
156
+ }];
143
157
  }, {
144
158
  readonly operation: "bootChat";
145
159
  readonly args: readonly [{
@@ -374,3 +374,15 @@ export declare const formData: Writable_<FormData>;
374
374
  * @internal
375
375
  */
376
376
  export declare const identifyFormData: Writable_<FormData>;
377
+ /** @internal */
378
+ export interface FormFieldSchema {
379
+ id: string;
380
+ name: string;
381
+ label: string;
382
+ }
383
+ /**
384
+ * Store for form data
385
+ *
386
+ * @internal
387
+ */
388
+ export declare const formFields: Writable_<FormData>;
@@ -178,7 +178,6 @@ export type ActionHookLog = {
178
178
  */
179
179
  export type ActionRunnerContext = {
180
180
  api_key: string;
181
- // TODO: edgejsのリリース状況によっては入ってこない可能性があるためoptionalにしているが、リリース完了後にrequiredに変更する
182
181
  collection_endpoint?: string;
183
182
  target?: "web" | "native";
184
183
  };
@@ -1,9 +1,6 @@
1
1
 
2
2
  //#region src/templates.ts
3
3
  /**
4
- * 最新SDKに対応したアクションコードを生成する関数群
5
- */
6
- /**
7
4
  * アクションのアプリコード(App.svelte)の初期値の生成
8
5
  *
9
6
  * @internal
@@ -70,6 +67,16 @@ import {
70
67
  FlexCountDown,
71
68
  FlexCountDownValue,
72
69
  FlexClipCopy,
70
+ FlexEmbed,
71
+ FlexForm,
72
+ FlexFormField,
73
+ FlexFormInput,
74
+ FlexFormTextarea,
75
+ FlexFormSelect,
76
+ FlexFormCheckboxes,
77
+ FlexFormRadios,
78
+ FlexFormBoolean,
79
+ FlexFormIdentifyField,
73
80
  } from '@plaidev/karte-action-sdk';
74
81
 
75
82
  ${icons.length > 0 ? `import {\n ${icons.join(",\n ")},\n} from '@plaidev/karte-action-sdk/icons';` : ""}
@@ -103,7 +110,7 @@ $: {
103
110
  }
104
111
 
105
112
  $: cssVariables = getCssVariables({ ...$data, ...$actionVariables });
106
- </script>`;
113
+ <\/script>`;
107
114
  }
108
115
  /**
109
116
  * アクションのエントリーコード(index.tsx)の初期値の生成
@@ -151,9 +158,9 @@ export default ({ send, data }) => {
151
158
  // ここにスクリプトを書いてください
152
159
  };`;
153
160
  return `\
154
- import { showAction } from '@plaidev/karte-action-sdk';
161
+ import { showAction, ActionProps } from '@plaidev/karte-action-sdk';
155
162
  ${script}
156
- export default ({ send, data }) => {
163
+ export default ({ send, data }: ActionProps) => {
157
164
  // ここにスクリプトを書いてください
158
165
  showAction();
159
166
  };`;
@@ -1,7 +1,4 @@
1
1
  /**
2
- * 最新SDKに対応したアクションコードを生成する関数群
3
- */
4
- /**
5
2
  * アクションのアプリコード(App.svelte)の初期値の生成
6
3
  *
7
4
  * @internal
@@ -30,6 +27,4 @@ export declare function createCompatibleCustomScript({ script, templateType }?:
30
27
  script?: string;
31
28
  templateType?: "webpopup" | "script";
32
29
  }): string;
33
- // 以下は後方互換。action-editor-frontをデプロイしたら削除可能。
34
- // @internal
35
30
  export declare function createCustomScript(script?: string): ReturnType<typeof createCompatibleCustomScript>;
package/dist/templates.js CHANGED
@@ -1,8 +1,5 @@
1
1
  //#region src/templates.ts
2
2
  /**
3
- * 最新SDKに対応したアクションコードを生成する関数群
4
- */
5
- /**
6
3
  * アクションのアプリコード(App.svelte)の初期値の生成
7
4
  *
8
5
  * @internal
@@ -69,6 +66,16 @@ import {
69
66
  FlexCountDown,
70
67
  FlexCountDownValue,
71
68
  FlexClipCopy,
69
+ FlexEmbed,
70
+ FlexForm,
71
+ FlexFormField,
72
+ FlexFormInput,
73
+ FlexFormTextarea,
74
+ FlexFormSelect,
75
+ FlexFormCheckboxes,
76
+ FlexFormRadios,
77
+ FlexFormBoolean,
78
+ FlexFormIdentifyField,
72
79
  } from '@plaidev/karte-action-sdk';
73
80
 
74
81
  ${icons.length > 0 ? `import {\n ${icons.join(",\n ")},\n} from '@plaidev/karte-action-sdk/icons';` : ""}
@@ -102,7 +109,7 @@ $: {
102
109
  }
103
110
 
104
111
  $: cssVariables = getCssVariables({ ...$data, ...$actionVariables });
105
- </script>`;
112
+ <\/script>`;
106
113
  }
107
114
  /**
108
115
  * アクションのエントリーコード(index.tsx)の初期値の生成
@@ -150,9 +157,9 @@ export default ({ send, data }) => {
150
157
  // ここにスクリプトを書いてください
151
158
  };`;
152
159
  return `\
153
- import { showAction } from '@plaidev/karte-action-sdk';
160
+ import { showAction, ActionProps } from '@plaidev/karte-action-sdk';
154
161
  ${script}
155
- export default ({ send, data }) => {
162
+ export default ({ send, data }: ActionProps) => {
156
163
  // ここにスクリプトを書いてください
157
164
  showAction();
158
165
  };`;
package/dist/types.d.ts CHANGED
@@ -178,7 +178,6 @@ export type ActionHookLog = {
178
178
  */
179
179
  export type ActionRunnerContext = {
180
180
  api_key: string;
181
- // TODO: edgejsのリリース状況によっては入ってこない可能性があるためoptionalにしているが、リリース完了後にrequiredに変更する
182
181
  collection_endpoint?: string;
183
182
  target?: "web" | "native";
184
183
  };
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@plaidev/karte-action-sdk",
3
- "version": "1.1.270-29177657.a375e44e",
3
+ "version": "1.1.270-29270413.6a2b1dc5c",
4
4
  "author": "Plaid Inc.",
5
5
  "license": "Apache-2.0",
6
+ "type": "module",
6
7
  "module": "./dist/index.es.js",
7
8
  "types": "dist/index.es.d.ts",
8
9
  "sideEffects": false,
@@ -78,8 +79,6 @@
78
79
  "access": "public"
79
80
  },
80
81
  "devDependencies": {
81
- "@microsoft/api-documenter": "7.19.28",
82
- "@microsoft/api-extractor": "7.48.0",
83
82
  "@rollup/plugin-alias": "^4.0.0",
84
83
  "@rollup/plugin-commonjs": "^23.0.1",
85
84
  "@rollup/plugin-image": "^3.0.2",
@@ -90,16 +89,15 @@
90
89
  "@testing-library/svelte": "^5.2.4",
91
90
  "@types/brotli": "^1.3.1",
92
91
  "@types/serve-static": "^1.13.10",
93
- "@vitest/coverage-v8": "3.0.5",
92
+ "@vitest/coverage-v8": "3.2.4",
94
93
  "brotli": "^1.3.3",
95
94
  "csstype": "^3.1.3",
96
- "isomorphic-fetch": "3.0.0",
97
95
  "jsdom": "24.1.0",
98
96
  "listhen": "^0.2.13",
99
97
  "picocolors": "^1.0.0",
100
98
  "playwright": "1.52.0",
101
99
  "preact": "10.5.7",
102
- "rolldown": "1.0.0-beta.19",
100
+ "rolldown": "1.0.0-beta.34",
103
101
  "rollup": "^3.12.0",
104
102
  "rollup-plugin-livereload": "^2.0.0",
105
103
  "rollup-plugin-serve": "^2.0.0",
@@ -113,11 +111,10 @@
113
111
  "svelte-preprocess": "5.1.4",
114
112
  "terser": "^5.37.0",
115
113
  "tsx": "^4.19.2",
116
- "unplugin-isolated-decl": "0.14.3",
114
+ "unplugin-isolated-decl": "0.15.1",
117
115
  "typescript": "5.8.2",
118
- "vitepress": "1.0.0-alpha.30",
119
- "vitest": "3.0.5",
120
- "@plaidev/action-compiler": "0.4.231",
116
+ "vitest": "3.2.4",
117
+ "@plaidev/action-compiler-helper": "0.0.1",
121
118
  "@plaidev/action-compiler-v2": "2.0.0"
122
119
  },
123
120
  "scripts": {
@@ -135,11 +132,7 @@
135
132
  "build:watch": "pnpm run build:svelte5:watch",
136
133
  "build:svelte3:watch": "pnpm install:svelte3 && tsx ./scripts/watch.ts --version 3",
137
134
  "build:svelte5:watch": "pnpm install:svelte5 && tsx ./scripts/watch.ts --version 5",
138
- "clean": "rm -rf dist __dist__ docs/**.md",
139
- "docs:dev": "vitepress dev docs",
140
- "docs:build": "vitepress build docs",
141
- "docs:preview": "vitepress preview docs",
142
- "docs:gen": "api-documenter markdown --input-folder ./meta --output-folder ./temp/markdown && mv ./temp/markdown/* ./docs",
135
+ "clean": "rm -rf dist __dist__",
143
136
  "check:svelte": "svelte-check --tsconfig ./tsconfig.json",
144
137
  "typecheck": "tsc --noEmit",
145
138
  "test": "vitest run test",