lovdacn 0.0.1 → 0.0.3

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 (156) hide show
  1. package/README.md +72 -106
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +224 -0
  4. package/package.json +41 -63
  5. package/templates/nativewind/.vscode/extensions.json +1 -0
  6. package/templates/nativewind/.vscode/settings.json +7 -0
  7. package/templates/nativewind/AGENTS.md +3 -0
  8. package/templates/nativewind/CLAUDE.md +1 -0
  9. package/{LICENSE → templates/nativewind/LICENSE} +21 -21
  10. package/templates/nativewind/README.md +56 -0
  11. package/templates/nativewind/app.json +43 -0
  12. package/templates/nativewind/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
  13. package/templates/nativewind/assets/expo.icon/Assets/grid.png +0 -0
  14. package/templates/nativewind/assets/expo.icon/icon.json +40 -0
  15. package/templates/nativewind/assets/images/android-icon-background.png +0 -0
  16. package/templates/nativewind/assets/images/android-icon-foreground.png +0 -0
  17. package/templates/nativewind/assets/images/android-icon-monochrome.png +0 -0
  18. package/templates/nativewind/assets/images/expo-badge-white.png +0 -0
  19. package/templates/nativewind/assets/images/expo-badge.png +0 -0
  20. package/templates/nativewind/assets/images/expo-logo.png +0 -0
  21. package/templates/nativewind/assets/images/favicon.png +0 -0
  22. package/templates/nativewind/assets/images/icon.png +0 -0
  23. package/templates/nativewind/assets/images/logo-glow.png +0 -0
  24. package/templates/nativewind/assets/images/react-logo.png +0 -0
  25. package/templates/nativewind/assets/images/react-logo@2x.png +0 -0
  26. package/templates/nativewind/assets/images/react-logo@3x.png +0 -0
  27. package/templates/nativewind/assets/images/splash-icon.png +0 -0
  28. package/templates/nativewind/assets/images/tabIcons/explore.png +0 -0
  29. package/templates/nativewind/assets/images/tabIcons/explore@2x.png +0 -0
  30. package/templates/nativewind/assets/images/tabIcons/explore@3x.png +0 -0
  31. package/templates/nativewind/assets/images/tabIcons/home.png +0 -0
  32. package/templates/nativewind/assets/images/tabIcons/home@2x.png +0 -0
  33. package/templates/nativewind/assets/images/tabIcons/home@3x.png +0 -0
  34. package/templates/nativewind/assets/images/tutorial-web.png +0 -0
  35. package/templates/nativewind/babel.config.js +9 -0
  36. package/templates/nativewind/expo-env.d.ts +3 -0
  37. package/templates/nativewind/lvcn.json +16 -0
  38. package/templates/nativewind/metro.config.js +6 -0
  39. package/templates/nativewind/nativewind-env.d.ts +3 -0
  40. package/templates/nativewind/package.json +55 -0
  41. package/templates/nativewind/postcss.config.js +6 -0
  42. package/templates/nativewind/scripts/reset-project.js +114 -0
  43. package/templates/nativewind/src/app/_layout.tsx +25 -0
  44. package/templates/nativewind/src/app/explore.tsx +180 -0
  45. package/templates/nativewind/src/app/index.tsx +12 -0
  46. package/templates/nativewind/src/components/animated-icon.module.css +6 -0
  47. package/templates/nativewind/src/components/animated-icon.tsx +148 -0
  48. package/templates/nativewind/src/components/animated-icon.web.tsx +108 -0
  49. package/templates/nativewind/src/components/app-tabs.tsx +32 -0
  50. package/templates/nativewind/src/components/app-tabs.web.tsx +115 -0
  51. package/templates/nativewind/src/components/external-link.tsx +25 -0
  52. package/templates/nativewind/src/components/hint-row.tsx +35 -0
  53. package/templates/nativewind/src/components/themed-text.tsx +73 -0
  54. package/templates/nativewind/src/components/themed-view.tsx +16 -0
  55. package/templates/nativewind/src/components/ui/button.tsx +106 -0
  56. package/templates/nativewind/src/components/ui/collapsible.tsx +65 -0
  57. package/templates/nativewind/src/components/ui/text.tsx +89 -0
  58. package/templates/nativewind/src/components/web-badge.tsx +43 -0
  59. package/templates/nativewind/src/constants/theme.ts +65 -0
  60. package/templates/nativewind/src/global.css +13 -0
  61. package/templates/nativewind/src/hooks/use-color-scheme.ts +1 -0
  62. package/templates/nativewind/src/hooks/use-color-scheme.web.ts +21 -0
  63. package/templates/nativewind/src/hooks/use-theme.ts +14 -0
  64. package/templates/nativewind/tailwind.config.js +86 -0
  65. package/templates/nativewind/tsconfig.json +21 -0
  66. package/templates/uniwind/.claude/settings.json +5 -0
  67. package/templates/uniwind/.vscode/extensions.json +1 -0
  68. package/templates/uniwind/.vscode/settings.json +7 -0
  69. package/templates/uniwind/AGENTS.md +3 -0
  70. package/templates/uniwind/CLAUDE.md +1 -0
  71. package/templates/uniwind/LICENSE +21 -0
  72. package/templates/uniwind/README.md +56 -0
  73. package/templates/uniwind/app.json +42 -0
  74. package/templates/uniwind/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
  75. package/templates/uniwind/assets/expo.icon/Assets/grid.png +0 -0
  76. package/templates/uniwind/assets/expo.icon/icon.json +40 -0
  77. package/templates/uniwind/assets/images/android-icon-background.png +0 -0
  78. package/templates/uniwind/assets/images/android-icon-foreground.png +0 -0
  79. package/templates/uniwind/assets/images/android-icon-monochrome.png +0 -0
  80. package/templates/uniwind/assets/images/expo-badge-white.png +0 -0
  81. package/templates/uniwind/assets/images/expo-badge.png +0 -0
  82. package/templates/uniwind/assets/images/expo-logo.png +0 -0
  83. package/templates/uniwind/assets/images/favicon.png +0 -0
  84. package/templates/uniwind/assets/images/icon.png +0 -0
  85. package/templates/uniwind/assets/images/logo-glow.png +0 -0
  86. package/templates/uniwind/assets/images/react-logo.png +0 -0
  87. package/templates/uniwind/assets/images/react-logo@2x.png +0 -0
  88. package/templates/uniwind/assets/images/react-logo@3x.png +0 -0
  89. package/templates/uniwind/assets/images/splash-icon.png +0 -0
  90. package/templates/uniwind/assets/images/tabIcons/explore.png +0 -0
  91. package/templates/uniwind/assets/images/tabIcons/explore@2x.png +0 -0
  92. package/templates/uniwind/assets/images/tabIcons/explore@3x.png +0 -0
  93. package/templates/uniwind/assets/images/tabIcons/home.png +0 -0
  94. package/templates/uniwind/assets/images/tabIcons/home@2x.png +0 -0
  95. package/templates/uniwind/assets/images/tabIcons/home@3x.png +0 -0
  96. package/templates/uniwind/assets/images/tutorial-web.png +0 -0
  97. package/templates/uniwind/expo-env.d.ts +3 -0
  98. package/templates/uniwind/lvcn.json +16 -0
  99. package/templates/uniwind/metro.config.js +14 -0
  100. package/templates/uniwind/package.json +46 -0
  101. package/templates/uniwind/scripts/reset-project.js +114 -0
  102. package/templates/uniwind/src/app/_layout.tsx +23 -0
  103. package/templates/uniwind/src/app/explore.tsx +180 -0
  104. package/templates/uniwind/src/app/index.tsx +98 -0
  105. package/templates/uniwind/src/components/animated-icon.module.css +6 -0
  106. package/templates/uniwind/src/components/animated-icon.tsx +148 -0
  107. package/templates/uniwind/src/components/animated-icon.web.tsx +108 -0
  108. package/templates/uniwind/src/components/app-tabs.tsx +32 -0
  109. package/templates/uniwind/src/components/app-tabs.web.tsx +115 -0
  110. package/templates/uniwind/src/components/external-link.tsx +25 -0
  111. package/templates/uniwind/src/components/hint-row.tsx +35 -0
  112. package/templates/uniwind/src/components/themed-text.tsx +73 -0
  113. package/templates/uniwind/src/components/themed-view.tsx +16 -0
  114. package/templates/uniwind/src/components/ui/collapsible.tsx +65 -0
  115. package/templates/uniwind/src/components/web-badge.tsx +43 -0
  116. package/templates/uniwind/src/constants/theme.ts +65 -0
  117. package/templates/uniwind/src/global.css +12 -0
  118. package/templates/uniwind/src/hooks/use-color-scheme.ts +1 -0
  119. package/templates/uniwind/src/hooks/use-color-scheme.web.ts +21 -0
  120. package/templates/uniwind/src/hooks/use-theme.ts +14 -0
  121. package/templates/uniwind/src/uniwind-types.d.ts +10 -0
  122. package/templates/uniwind/tsconfig.json +20 -0
  123. package/.changeset/config.json +0 -17
  124. package/.github/actions/setup/action.yml +0 -21
  125. package/.github/workflows/check.yml +0 -54
  126. package/.github/workflows/release.yml +0 -0
  127. package/.github/workflows/snapshot.yml +0 -24
  128. package/.prettierrc +0 -8
  129. package/.vscode/extensions.json +0 -6
  130. package/.vscode/settings.json +0 -46
  131. package/eslint.config.mjs +0 -118
  132. package/patches/@changesets__get-github-info@0.6.0.patch +0 -48
  133. package/scripts/copy-package-json.ts +0 -35
  134. package/src/bin.ts +0 -18
  135. package/src/cli.ts +0 -66
  136. package/src/contexts/cli-options.ts +0 -29
  137. package/src/project-manifest.ts +0 -370
  138. package/src/services/commands/add.ts +0 -128
  139. package/src/services/commands/doctor.ts +0 -287
  140. package/src/services/commands/init.ts +0 -94
  141. package/src/services/git.ts +0 -39
  142. package/src/services/package-manager.ts +0 -48
  143. package/src/services/project-config.ts +0 -295
  144. package/src/services/required-files-checker.ts +0 -375
  145. package/src/services/spinner.ts +0 -15
  146. package/src/services/template.ts +0 -223
  147. package/src/utils/retry-with.ts +0 -9
  148. package/src/utils/run-command.ts +0 -10
  149. package/test/Dummy.test.ts +0 -7
  150. package/tsconfig.base.json +0 -53
  151. package/tsconfig.json +0 -14
  152. package/tsconfig.scripts.json +0 -17
  153. package/tsconfig.src.json +0 -10
  154. package/tsconfig.test.json +0 -10
  155. package/tsup.config.ts +0 -9
  156. package/vitest.config.ts +0 -12
@@ -1,223 +0,0 @@
1
- import { runCommand } from "@cli/utils/run-command.js"
2
- import { Prompt } from "@effect/cli"
3
- import { FileSystem, Path } from "@effect/platform"
4
- import { Effect } from "effect"
5
- import { Spinner } from "@cli/services/spinner.js"
6
- import logSymbols from "log-symbols"
7
-
8
- class Template extends Effect.Service<Template>()("src/services/template", {
9
- dependencies: [Spinner.Default],
10
- effect: Effect.gen(function* () {
11
- const fs = yield* FileSystem.FileSystem
12
- const path = yield* Path.Path
13
- const spinner = yield* Spinner
14
-
15
- return {
16
- clone: ({ cwd, name, repo }: { cwd: string; name: string; repo: { subPath?: string; url: string } }) =>
17
- Effect.acquireUseRelease(
18
- fs.makeTempDirectory(),
19
- (tempDirPath) =>
20
- Effect.gen(function* () {
21
- yield* Effect.logDebug(`Template.clone args: ${JSON.stringify({ cwd, name, repo }, null, 2)}`)
22
-
23
- const newRepoPath = path.join(cwd, name)
24
-
25
- const newRepoPathExists = yield* fs.exists(newRepoPath)
26
-
27
- yield* Effect.logDebug(`Does ${newRepoPath} exist? ${newRepoPathExists ? "yes" : "no"}`)
28
-
29
- if (newRepoPathExists) {
30
- yield* Effect.logWarning(`${logSymbols.warning} A project already exists in this directory.`)
31
- const choice = yield* Prompt.select({
32
- message: "How would you like to proceed?",
33
- choices: [
34
- { title: "Cancel and exit", value: "cancel" },
35
- { title: "Overwrite the existing project", value: "overwrite" }
36
- ]
37
- })
38
-
39
- if (choice === "cancel") {
40
- yield* Effect.logDebug(`User chose to cancel`)
41
- return yield* Effect.succeed(true)
42
- }
43
-
44
- const confirmOverwrite = yield* Prompt.confirm({
45
- message: "Are you sure you want to overwrite the existing project?",
46
- initial: true
47
- })
48
-
49
- if (!confirmOverwrite) {
50
- yield* Effect.logDebug(`User chose to not overwrite the existing project`)
51
- return yield* Effect.succeed(true)
52
- }
53
- }
54
-
55
- yield* Effect.logDebug(`Created temp directory: ${tempDirPath}`)
56
-
57
- const templateName = repo.subPath
58
- ? path.basename(repo.subPath)
59
- : path.basename(repo.url).replace(".git", "")
60
-
61
- spinner.start(`Initializing the ${templateName} template...`)
62
- yield* runCommand("git", ["clone", "--depth=1", "--branch", "main", repo.url, name], {
63
- cwd: tempDirPath
64
- })
65
-
66
- const cloneToTempPath = path.join(tempDirPath, name)
67
-
68
- yield* Effect.logDebug(`Cloned temp template to ${cloneToTempPath}`)
69
-
70
- yield* fs.copy(repo.subPath ? path.join(cloneToTempPath, repo.subPath) : cloneToTempPath, newRepoPath, {
71
- overwrite: true
72
- })
73
-
74
- yield* Effect.logDebug(`Copied template to ${newRepoPath}`)
75
-
76
- const allPaths = yield* fs.readDirectory(newRepoPath, { recursive: true })
77
-
78
- yield* Effect.logDebug(`Replacing template name ${templateName} with ${name} in ${allPaths.length} files`)
79
- yield* Effect.logDebug(`All paths: ${allPaths.join("\n")}`)
80
-
81
- yield* Effect.forEach(allPaths, (file) =>
82
- Effect.gen(function* () {
83
- const content = yield* fs
84
- .readFileString(path.join(newRepoPath, file))
85
- .pipe(Effect.catchAll(() => Effect.succeed("")))
86
-
87
- if (!content.includes(templateName)) {
88
- return
89
- }
90
-
91
- yield* Effect.logDebug(`Replacing template name "${templateName}" with "${name}" in ${file}`)
92
-
93
- const replaced = content.replaceAll(templateName, name)
94
- yield* fs.writeFileString(path.join(newRepoPath, file), replaced)
95
- })
96
- )
97
-
98
- spinner.stop()
99
-
100
- const installDependencies = yield* Prompt.confirm({
101
- message: "Would you like to install dependencies?",
102
- initial: true
103
- })
104
- let packageManager = "none"
105
- if (installDependencies) {
106
- packageManager = yield* Prompt.select({
107
- message: "Which package manager would you like to use?",
108
- choices: [
109
- { title: "bun", value: "bun" },
110
- { title: "pnpm", value: "pnpm" },
111
- { title: "npm", value: "npm" },
112
- { title: "yarn", value: "yarn" }
113
- ]
114
- })
115
-
116
- const npmrcPath = path.join(newRepoPath, ".npmrc")
117
- const hasNpmrc = yield* fs.exists(npmrcPath)
118
-
119
- if (packageManager === "pnpm" && !hasNpmrc) {
120
- yield* Effect.logDebug(`Writing .npmrc file...`)
121
- yield* fs.writeFileString(npmrcPath, "node-linker=hoisted\nenable-pre-post-scripts=true")
122
- }
123
-
124
- if (packageManager !== "pnpm" && packageManager !== "none" && hasNpmrc) {
125
- yield* Effect.logDebug(`Removing .npmrc file...`)
126
- yield* fs.remove(npmrcPath)
127
- }
128
-
129
- yield* runCommand(packageManager, ["install"], {
130
- cwd: newRepoPath,
131
- stdio: "inherit"
132
- })
133
-
134
- yield* runCommand("npx", ["expo", "install", "--fix"], {
135
- cwd: newRepoPath,
136
- stdio: "inherit"
137
- })
138
- }
139
-
140
- const gitInit = yield* Prompt.confirm({
141
- message: "Would you like to initialize a Git repository?",
142
- initial: true
143
- })
144
-
145
- if (gitInit) {
146
- spinner.start(`Initializing Git repository...`)
147
-
148
- let hasGitError = false
149
- yield* runCommand("git", ["init"], {
150
- cwd: newRepoPath,
151
- stdio: "inherit"
152
- }).pipe(
153
- Effect.catchAll(() => {
154
- hasGitError = true
155
- return Effect.succeed(true)
156
- })
157
- )
158
-
159
- if (!hasGitError) {
160
- yield* runCommand("git", ["add", "-A"], {
161
- cwd: newRepoPath,
162
- stdio: "inherit"
163
- }).pipe(
164
- Effect.catchAll(() => {
165
- hasGitError = true
166
- return Effect.succeed(true)
167
- })
168
- )
169
- }
170
-
171
- if (!hasGitError) {
172
- yield* runCommand("git", ["commit", "-m", "initialize project with lavdacn"], {
173
- cwd: newRepoPath,
174
- stdio: "inherit"
175
- }).pipe(Effect.catchAll(() => Effect.succeed(true)))
176
- }
177
- spinner.stop()
178
- }
179
-
180
- console.log("\n")
181
- yield* Effect.log(`\x1b[37m${logSymbols.success} New project initialized successfully!\x1b[0m`)
182
- if (packageManager !== "none") {
183
- yield* Effect.log(
184
- `\x1b[22m\x1b[38;5;250m${logSymbols.info} To get started, run: \x1b[37m\`cd ${path.join(
185
- cwd,
186
- name
187
- )} && ${packageManager} ${
188
- packageManager === "npm" || packageManager === "bun" ? "run" : ""
189
- } dev\`\x1b[0m`
190
- )
191
- }
192
-
193
- if (packageManager === "none") {
194
- yield* Effect.log(`\x1b[22m\x1b[38;5;250m${logSymbols.info} To get started:\x1b[0m`)
195
- yield* Effect.log(
196
- "\x1b[22m\x1b[38;5;250m↪ Install the dependencies manually using your package manager of choice.\x1b[0m"
197
- )
198
- yield* Effect.log("\x1b[22m\x1b[38;5;250m↪ Run the dev script.\x1b[0m")
199
- }
200
- console.log("\n")
201
- yield* Effect.log(`\x1b[37m${logSymbols.info} Additional resources\x1b[0m`)
202
- yield* Effect.log(
203
- `\x1b[22m\x1b[38;5;250m↪ Documentation: \x1b[37mhttps://lavdacn.com\x1b[0m`
204
- )
205
- yield* Effect.log(
206
- `\x1b[22m\x1b[38;5;250m↪ Report issues: \x1b[37mhttps://github.com/lovdacn-ui/ui/issues\x1b[0m`
207
- )
208
-
209
- return newRepoPath
210
- }),
211
- (tempDirPath) => {
212
- spinner.stop()
213
- return fs
214
- .remove(tempDirPath, { recursive: true })
215
- .pipe(Effect.catchAll(() => Effect.logError(`Failed to remove temp directory at ${tempDirPath}`)))
216
- }
217
- )
218
- }
219
- })
220
- }) {}
221
-
222
- export { Template }
223
-
@@ -1,9 +0,0 @@
1
- import { Effect } from "effect"
2
-
3
- const retryWith = <A, R, E, B>(
4
- fn: (input: A) => Effect.Effect<R, E, B>,
5
- inputs: readonly [A, ...Array<A>]
6
- ): Effect.Effect<R, E, B> =>
7
- inputs.slice(1).reduce((acc, input) => acc.pipe(Effect.orElse(() => fn(input))), fn(inputs[0]))
8
-
9
- export { retryWith }
@@ -1,10 +0,0 @@
1
- import { Effect } from "effect"
2
- import { execa } from "execa"
3
-
4
- const runCommand = (file: string, args: Array<string>, options: Parameters<typeof execa>[1]) =>
5
- Effect.tryPromise({
6
- try: () => execa(file, args, options),
7
- catch: (error) => new Error(`Failed to run command: ${file} ${args.join(" ")}`, { cause: String(error) })
8
- })
9
-
10
- export { runCommand }
@@ -1,7 +0,0 @@
1
- import { describe, expect, it } from "@effect/vitest"
2
-
3
- describe("Dummy", () => {
4
- it("should pass", () => {
5
- expect(true).toBe(true)
6
- })
7
- })
@@ -1,53 +0,0 @@
1
- {
2
- "include": [],
3
- "compilerOptions": {
4
- "strict": true,
5
- "moduleDetection": "force",
6
- "composite": true,
7
- "downlevelIteration": true,
8
- "resolveJsonModule": true,
9
- "esModuleInterop": false,
10
- "declaration": true,
11
- "skipLibCheck": true,
12
- "exactOptionalPropertyTypes": true,
13
- "emitDecoratorMetadata": false,
14
- "experimentalDecorators": true,
15
- "moduleResolution": "NodeNext",
16
- "lib": [
17
- "ES2022",
18
- "DOM"
19
- ],
20
- "isolatedModules": true,
21
- "sourceMap": true,
22
- "declarationMap": true,
23
- "noImplicitReturns": false,
24
- "noUnusedLocals": true,
25
- "noUnusedParameters": false,
26
- "noFallthroughCasesInSwitch": true,
27
- "noEmitOnError": false,
28
- "noErrorTruncation": false,
29
- "allowJs": false,
30
- "checkJs": false,
31
- "forceConsistentCasingInFileNames": true,
32
- "stripInternal": true,
33
- "noImplicitAny": true,
34
- "noImplicitThis": true,
35
- "noUncheckedIndexedAccess": false,
36
- "strictNullChecks": true,
37
- "baseUrl": ".",
38
- "target": "ES2022",
39
- "module": "NodeNext",
40
- "incremental": true,
41
- "removeComments": false,
42
- "plugins": [
43
- {
44
- "name": "@effect/language-service"
45
- }
46
- ],
47
- "paths": {
48
- "@cli/*": [
49
- "./src/*"
50
- ]
51
- }
52
- }
53
- }
package/tsconfig.json DELETED
@@ -1,14 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "references": [
4
- {
5
- "path": "tsconfig.src.json"
6
- },
7
- {
8
- "path": "tsconfig.test.json"
9
- },
10
- {
11
- "path": "tsconfig.scripts.json"
12
- }
13
- ]
14
- }
@@ -1,17 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "include": [
4
- "scripts",
5
- "eslint.config.mjs",
6
- "tsup.config.ts",
7
- "vitest.config.ts"
8
- ],
9
- "compilerOptions": {
10
- "types": [
11
- "node"
12
- ],
13
- "tsBuildInfoFile": ".tsbuildinfo/scripts.tsbuildinfo",
14
- "rootDir": ".",
15
- "noEmit": true
16
- }
17
- }
package/tsconfig.src.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "include": ["src"],
4
- "compilerOptions": {
5
- "types": ["node"],
6
- "tsBuildInfoFile": ".tsbuildinfo/src.tsbuildinfo",
7
- "rootDir": "src",
8
- "noEmit": true
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "include": ["test"],
4
- "compilerOptions": {
5
- "types": ["node"],
6
- "tsBuildInfoFile": ".tsbuildinfo/test.tsbuildinfo",
7
- "rootDir": "test",
8
- "noEmit": true
9
- }
10
- }
package/tsup.config.ts DELETED
@@ -1,9 +0,0 @@
1
- import { defineConfig } from "tsup"
2
-
3
- export default defineConfig({
4
- entry: ["src/bin.ts"],
5
- clean: true,
6
- publicDir: true,
7
- treeshake: "smallest",
8
- external: ["@parcel/watcher"]
9
- })
package/vitest.config.ts DELETED
@@ -1,12 +0,0 @@
1
- import { defineConfig } from "vitest/config"
2
-
3
- export default defineConfig({
4
- test: {
5
- include: ["./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
6
- exclude: [],
7
- globals: true,
8
- coverage: {
9
- provider: "v8"
10
- }
11
- }
12
- })