@aamini/config 0.0.19 → 0.2.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.
Files changed (56) hide show
  1. package/README.md +111 -20
  2. package/dist/anti-slop/index.d.mts +6 -0
  3. package/dist/anti-slop/index.mjs +2414 -0
  4. package/dist/anti-slop/index.mjs.map +1 -0
  5. package/dist/merge-BEomHgbw.d.mts +21 -0
  6. package/dist/merge-DThKwm_6.mjs +193 -0
  7. package/dist/merge-DThKwm_6.mjs.map +1 -0
  8. package/dist/playwright.d.mts +8 -3
  9. package/dist/playwright.mjs +20 -11
  10. package/dist/playwright.mjs.map +1 -1
  11. package/dist/root-U5B4x0aj.mjs +15 -0
  12. package/dist/root-U5B4x0aj.mjs.map +1 -0
  13. package/dist/tanstack/index.d.mts +45 -0
  14. package/dist/tanstack/index.mjs +189 -0
  15. package/dist/tanstack/index.mjs.map +1 -0
  16. package/dist/vite-plus/index.d.mts +101 -0
  17. package/dist/vite-plus/index.mjs +2 -0
  18. package/dist/vitest/browser.d.mts +22 -0
  19. package/dist/vitest/browser.mjs +84 -0
  20. package/dist/vitest/browser.mjs.map +1 -0
  21. package/dist/vitest/db.d.mts +28 -0
  22. package/dist/vitest/db.mjs +42 -0
  23. package/dist/vitest/db.mjs.map +1 -0
  24. package/dist/vitest/index.d.mts +29 -0
  25. package/dist/vitest/index.mjs +2 -0
  26. package/dist/vitest/react.d.mts +34 -0
  27. package/dist/vitest/react.mjs +43 -0
  28. package/dist/vitest/react.mjs.map +1 -0
  29. package/dist/vitest/server.d.mts +13 -0
  30. package/dist/vitest/server.mjs +28 -0
  31. package/dist/vitest/server.mjs.map +1 -0
  32. package/dist/vitest-CXdvqyRH.mjs +169 -0
  33. package/dist/vitest-CXdvqyRH.mjs.map +1 -0
  34. package/package.json +169 -95
  35. package/tsconfig/astro.json +9 -0
  36. package/tsconfig/{tsconfig.strict.json → base.json} +8 -0
  37. package/tsconfig/react.json +9 -0
  38. package/dist/setup/styles.d.mts +0 -1
  39. package/dist/setup/styles.mjs +0 -2
  40. package/dist/test/browser.d.mts +0 -17
  41. package/dist/test/browser.mjs +0 -35
  42. package/dist/test/browser.mjs.map +0 -1
  43. package/dist/test/db.d.mts +0 -41
  44. package/dist/test/db.mjs +0 -93
  45. package/dist/test/db.mjs.map +0 -1
  46. package/dist/test/server.d.mts +0 -16
  47. package/dist/test/server.mjs +0 -30
  48. package/dist/test/server.mjs.map +0 -1
  49. package/dist/test/visual-page.d.mts +0 -30
  50. package/dist/test/visual-page.mjs +0 -40
  51. package/dist/test/visual-page.mjs.map +0 -1
  52. package/dist/vite.d.mts +0 -73
  53. package/dist/vite.mjs +0 -208
  54. package/dist/vite.mjs.map +0 -1
  55. package/tsconfig/tsconfig.lib.json +0 -19
  56. package/tsconfig/tsconfig.tanstack.json +0 -17
@@ -1,40 +0,0 @@
1
- import { expect } from "./browser.mjs";
2
- import { createElement } from "react";
3
- import { page } from "vite-plus/test/browser";
4
- import { render } from "vitest-browser-react";
5
- //#region src/test/visual-page.tsx
6
- async function waitForImages() {
7
- await Promise.all(Array.from(document.images, (image) => {
8
- if (image.complete) return Promise.resolve();
9
- return image.decode().catch(() => void 0);
10
- }));
11
- }
12
- async function expectComponentScreenshot({ component, name, waitFor, prepare, setup, target = (screen) => screen.container, fullPage = true, viewport = {
13
- width: 1280,
14
- height: 720
15
- } }) {
16
- localStorage.clear();
17
- document.body.replaceChildren();
18
- await setup?.();
19
- await page.viewport(viewport.width, viewport.height);
20
- const container = document.body.appendChild(document.createElement("div"));
21
- container.style.width = "100vw";
22
- container.style.minHeight = "100vh";
23
- const screen = await render(createElement(component), { container });
24
- await prepare?.(screen);
25
- await expect.element(waitFor(screen)).toBeVisible();
26
- await document.fonts.ready;
27
- await waitForImages();
28
- if (fullPage) {
29
- const frame = window.frameElement;
30
- if (frame) {
31
- frame.style.width = `${document.body.scrollWidth}px`;
32
- frame.style.height = `${document.body.scrollHeight}px`;
33
- }
34
- }
35
- await expect.element(target(screen)).toMatchScreenshot(`${name}.png`, { screenshotOptions: { scale: "css" } });
36
- }
37
- //#endregion
38
- export { expectComponentScreenshot };
39
-
40
- //# sourceMappingURL=visual-page.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"visual-page.mjs","names":[],"sources":["../../src/test/visual-page.tsx"],"sourcesContent":["import { createElement, type ComponentType } from 'react'\nimport { page } from 'vite-plus/test/browser'\nimport { render } from 'vitest-browser-react'\n\nimport { expect } from './browser'\n\nasync function waitForImages() {\n\tawait Promise.all(\n\t\tArray.from(document.images, (image) => {\n\t\t\tif (image.complete) return Promise.resolve()\n\t\t\treturn image.decode().catch(() => undefined)\n\t\t}),\n\t)\n}\n\ntype ScreenshotOptions = {\n\tcomponent: ComponentType\n\tname: string\n\twaitFor: (\n\t\tscreen: Awaited<ReturnType<typeof render>>,\n\t) => HTMLElement | SVGElement | null\n\tprepare?: (screen: Awaited<ReturnType<typeof render>>) => void | Promise<void>\n\tsetup?: () => void | Promise<void>\n\ttarget?: (screen: Awaited<ReturnType<typeof render>>) => HTMLElement\n\tfullPage?: boolean\n\tviewport?: { width: number; height: number }\n}\n\nexport async function expectComponentScreenshot({\n\tcomponent,\n\tname,\n\twaitFor,\n\tprepare,\n\tsetup,\n\ttarget = (screen) => screen.container,\n\tfullPage = true,\n\tviewport = { width: 1280, height: 720 },\n}: ScreenshotOptions) {\n\tlocalStorage.clear()\n\tdocument.body.replaceChildren()\n\tawait setup?.()\n\tawait page.viewport(viewport.width, viewport.height)\n\n\tconst container = document.body.appendChild(document.createElement('div'))\n\tcontainer.style.width = '100vw'\n\tcontainer.style.minHeight = '100vh'\n\n\tconst screen = await render(createElement(component), { container })\n\tawait prepare?.(screen)\n\tawait expect.element(waitFor(screen)).toBeVisible()\n\tawait document.fonts.ready\n\tawait waitForImages()\n\n\tif (fullPage) {\n\t\tconst frame = window.frameElement as HTMLIFrameElement | null\n\t\tif (frame) {\n\t\t\tframe.style.width = `${document.body.scrollWidth}px`\n\t\t\tframe.style.height = `${document.body.scrollHeight}px`\n\t\t}\n\t}\n\n\tawait expect.element(target(screen)).toMatchScreenshot(`${name}.png`, {\n\t\tscreenshotOptions: { scale: 'css' },\n\t})\n}\n"],"mappings":";;;;;AAMA,eAAe,gBAAgB;CAC9B,MAAM,QAAQ,IACb,MAAM,KAAK,SAAS,SAAS,UAAU;EACtC,IAAI,MAAM,UAAU,OAAO,QAAQ,SAAS;EAC5C,OAAO,MAAM,QAAQ,CAAC,YAAY,KAAA,EAAU;GAC3C,CACF;;AAgBF,eAAsB,0BAA0B,EAC/C,WACA,MACA,SACA,SACA,OACA,UAAU,WAAW,OAAO,WAC5B,WAAW,MACX,WAAW;CAAE,OAAO;CAAM,QAAQ;CAAK,IAClB;CACrB,aAAa,OAAO;CACpB,SAAS,KAAK,iBAAiB;CAC/B,MAAM,SAAS;CACf,MAAM,KAAK,SAAS,SAAS,OAAO,SAAS,OAAO;CAEpD,MAAM,YAAY,SAAS,KAAK,YAAY,SAAS,cAAc,MAAM,CAAC;CAC1E,UAAU,MAAM,QAAQ;CACxB,UAAU,MAAM,YAAY;CAE5B,MAAM,SAAS,MAAM,OAAO,cAAc,UAAU,EAAE,EAAE,WAAW,CAAC;CACpE,MAAM,UAAU,OAAO;CACvB,MAAM,OAAO,QAAQ,QAAQ,OAAO,CAAC,CAAC,aAAa;CACnD,MAAM,SAAS,MAAM;CACrB,MAAM,eAAe;CAErB,IAAI,UAAU;EACb,MAAM,QAAQ,OAAO;EACrB,IAAI,OAAO;GACV,MAAM,MAAM,QAAQ,GAAG,SAAS,KAAK,YAAY;GACjD,MAAM,MAAM,SAAS,GAAG,SAAS,KAAK,aAAa;;;CAIrD,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,CAAC,kBAAkB,GAAG,KAAK,OAAO,EACrE,mBAAmB,EAAE,OAAO,OAAO,EACnC,CAAC"}
package/dist/vite.d.mts DELETED
@@ -1,73 +0,0 @@
1
- import { TestProjectConfiguration, UserConfig } from "vite-plus";
2
-
3
- //#region src/vite.d.ts
4
- declare const fmt: {
5
- singleQuote: true;
6
- semi: false;
7
- useTabs: true;
8
- experimentalTailwindcss: {};
9
- printWidth: number;
10
- experimentalSortPackageJson: boolean;
11
- proseWrap: "always";
12
- ignorePatterns: string[];
13
- overrides: {
14
- files: string[];
15
- options: {
16
- useTabs: false;
17
- };
18
- }[];
19
- };
20
- declare const lint: {
21
- plugins: ("eslint" | "react" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "jsx-a11y" | "react-perf" | "promise" | "node")[];
22
- categories: {};
23
- options: {
24
- typeAware: true;
25
- typeCheck: true;
26
- };
27
- rules: {
28
- 'no-empty-pattern': "off";
29
- 'no-console': ["error", {
30
- allow: string[];
31
- }];
32
- };
33
- settings: {
34
- 'jsx-a11y': {
35
- components: {};
36
- attributes: {};
37
- };
38
- react: {
39
- formComponents: any[];
40
- linkComponents: any[];
41
- };
42
- jsdoc: {
43
- ignorePrivate: false;
44
- ignoreInternal: false;
45
- ignoreReplacesDocs: true;
46
- overrideReplacesDocs: true;
47
- augmentsExtendsReplacesDocs: false;
48
- implementsReplacesDocs: false;
49
- exemptDestructuredRootsFromChecks: false;
50
- tagNamePreference: {};
51
- };
52
- };
53
- env: {
54
- builtin: true;
55
- };
56
- globals: {};
57
- ignorePatterns: string[];
58
- };
59
- interface ProjectOverrides {
60
- server?: TestProjectConfiguration;
61
- browser?: TestProjectConfiguration;
62
- }
63
- declare const test: (projectOverrides?: ProjectOverrides) => UserConfig["test"];
64
- declare const createAppConfig: ({
65
- root,
66
- projectOverrides
67
- }: {
68
- root?: string;
69
- projectOverrides?: ProjectOverrides;
70
- }) => UserConfig;
71
- //#endregion
72
- export { createAppConfig, fmt, lint, test };
73
- //# sourceMappingURL=vite.d.mts.map
package/dist/vite.mjs DELETED
@@ -1,208 +0,0 @@
1
- import { nitro } from "nitro/vite";
2
- import { devtools } from "@tanstack/devtools-vite";
3
- import { tanstackStart } from "@tanstack/react-start/plugin/vite";
4
- import viteReact, { reactCompilerPreset } from "@vitejs/plugin-react";
5
- import tailwindcss from "@tailwindcss/vite";
6
- import babel from "@rolldown/plugin-babel";
7
- import svgr from "vite-plugin-svgr";
8
- import { resolve } from "node:path";
9
- import { mergeConfig } from "vite-plus";
10
- import { playwright } from "vite-plus/test/browser-playwright";
11
- import { existsSync } from "node:fs";
12
- //#region src/plugins/virtual-modules.ts
13
- const HANDLER_LOCATIONS = [
14
- "__mocks__/handlers.ts",
15
- "__mocks__/handlers.js",
16
- "src/mocks/handlers.ts",
17
- "src/mocks/handlers.js"
18
- ];
19
- const STYLES_LOCATIONS = [
20
- "src/styles.css",
21
- "src/index.css",
22
- "src/app.css"
23
- ];
24
- function createVirtualFilePlugin({ locations, moduleId, name, sideEffectOnly = false }) {
25
- const resolvedModuleId = `\0${moduleId}`;
26
- let root = process.cwd();
27
- return {
28
- name,
29
- configResolved(config) {
30
- root = config.root;
31
- },
32
- resolveId(id) {
33
- if (id === moduleId) return resolvedModuleId;
34
- },
35
- load(id) {
36
- if (id !== resolvedModuleId) return void 0;
37
- for (const location of locations) {
38
- const fullPath = resolve(root, location);
39
- if (existsSync(fullPath)) {
40
- if (sideEffectOnly) return `import ${JSON.stringify(fullPath)}`;
41
- return `export { default } from ${JSON.stringify(fullPath)}`;
42
- }
43
- }
44
- throw new Error(`No file found for ${moduleId}. Expected one of:\n${locations.map((location) => ` - ${resolve(root, location)}`).join("\n")}`);
45
- }
46
- };
47
- }
48
- function createMswHandlersPlugin() {
49
- return createVirtualFilePlugin({
50
- locations: HANDLER_LOCATIONS,
51
- moduleId: "@test/handlers",
52
- name: "aamini-msw-handlers"
53
- });
54
- }
55
- function createStylesPlugin() {
56
- return createVirtualFilePlugin({
57
- locations: STYLES_LOCATIONS,
58
- moduleId: "@test/styles",
59
- name: "aamini-test-styles",
60
- sideEffectOnly: true
61
- });
62
- }
63
- //#endregion
64
- //#region src/vite.ts
65
- const stylesSetup = "@aamini/config/setup/styles";
66
- const fmt = {
67
- singleQuote: true,
68
- semi: false,
69
- useTabs: true,
70
- experimentalTailwindcss: {},
71
- printWidth: 80,
72
- experimentalSortPackageJson: false,
73
- proseWrap: "always",
74
- ignorePatterns: [
75
- "**/.output",
76
- "**/dist/**",
77
- "pnpm-lock.yaml",
78
- "**/routeTree.gen.ts"
79
- ],
80
- overrides: [{
81
- files: ["*.{yaml,yml}"],
82
- options: { useTabs: false }
83
- }]
84
- };
85
- const lint = {
86
- plugins: [
87
- "eslint",
88
- "unicorn",
89
- "typescript",
90
- "oxc",
91
- "react",
92
- "react-perf",
93
- "import",
94
- "jsdoc",
95
- "jsx-a11y",
96
- "node",
97
- "promise"
98
- ],
99
- categories: {},
100
- options: {
101
- typeAware: true,
102
- typeCheck: true
103
- },
104
- rules: {
105
- "no-empty-pattern": "off",
106
- "no-console": ["error", { allow: ["warn", "error"] }]
107
- },
108
- settings: {
109
- "jsx-a11y": {
110
- components: {},
111
- attributes: {}
112
- },
113
- react: {
114
- formComponents: [],
115
- linkComponents: []
116
- },
117
- jsdoc: {
118
- ignorePrivate: false,
119
- ignoreInternal: false,
120
- ignoreReplacesDocs: true,
121
- overrideReplacesDocs: true,
122
- augmentsExtendsReplacesDocs: false,
123
- implementsReplacesDocs: false,
124
- exemptDestructuredRootsFromChecks: false,
125
- tagNamePreference: {}
126
- }
127
- },
128
- env: { builtin: true },
129
- globals: {},
130
- ignorePatterns: ["**/dist/**"]
131
- };
132
- const test = (projectOverrides) => ({
133
- passWithNoTests: true,
134
- projects: [
135
- {
136
- extends: true,
137
- test: {
138
- name: "unit",
139
- include: ["src/**/*.test.unit.ts"]
140
- }
141
- },
142
- mergeConfig({
143
- extends: true,
144
- plugins: [createMswHandlersPlugin()],
145
- test: {
146
- name: "server",
147
- include: ["src/**/*.test.ts"],
148
- testTimeout: 3e4,
149
- fileParallelism: false
150
- }
151
- }, projectOverrides?.server ?? {}),
152
- mergeConfig({
153
- extends: true,
154
- plugins: [createMswHandlersPlugin(), createStylesPlugin()],
155
- test: {
156
- name: "browser",
157
- include: ["src/**/*.test.tsx", "tests/**/*.test.tsx"],
158
- setupFiles: [stylesSetup],
159
- browser: {
160
- instances: [{ browser: "chromium" }],
161
- provider: playwright(),
162
- enabled: true,
163
- headless: true
164
- }
165
- }
166
- }, projectOverrides?.browser ?? {})
167
- ]
168
- });
169
- const createAppConfig = ({ root = process.cwd(), projectOverrides }) => ({
170
- root,
171
- resolve: {
172
- tsconfigPaths: true,
173
- dedupe: ["react", "react-dom"],
174
- alias: [
175
- {
176
- find: "@/mocks",
177
- replacement: resolve(root, "__mocks__")
178
- },
179
- {
180
- find: "@",
181
- replacement: resolve(root, "src")
182
- },
183
- {
184
- find: "@tests",
185
- replacement: resolve(root, "tests")
186
- }
187
- ]
188
- },
189
- plugins: [
190
- tanstackStart(),
191
- ...process.env.VITEST === "true" ? [] : [devtools({ injectSource: { enabled: false } }), nitro()],
192
- tailwindcss(),
193
- viteReact(),
194
- babel({ presets: [reactCompilerPreset()] }),
195
- svgr({
196
- include: "**/*.svg",
197
- svgrOptions: { exportType: "default" }
198
- })
199
- ],
200
- fmt,
201
- lint,
202
- staged: { "*.{js,ts,tsx}": "vp check --fix" },
203
- test: test(projectOverrides)
204
- });
205
- //#endregion
206
- export { createAppConfig, fmt, lint, test };
207
-
208
- //# sourceMappingURL=vite.mjs.map
package/dist/vite.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.mjs","names":[],"sources":["../src/plugins/virtual-modules.ts","../src/vite.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport type { Plugin } from 'vite'\n\nconst HANDLER_LOCATIONS = [\n\t'__mocks__/handlers.ts',\n\t'__mocks__/handlers.js',\n\t'src/mocks/handlers.ts',\n\t'src/mocks/handlers.js',\n]\n\nconst STYLES_LOCATIONS = ['src/styles.css', 'src/index.css', 'src/app.css']\n\nfunction createVirtualFilePlugin({\n\tlocations,\n\tmoduleId,\n\tname,\n\tsideEffectOnly = false,\n}: {\n\tlocations: string[]\n\tmoduleId: string\n\tname: string\n\tsideEffectOnly?: boolean\n}): Plugin {\n\tconst resolvedModuleId = `\\0${moduleId}`\n\tlet root = process.cwd()\n\n\treturn {\n\t\tname,\n\t\tconfigResolved(config) {\n\t\t\troot = config.root\n\t\t},\n\t\tresolveId(id) {\n\t\t\tif (id === moduleId) return resolvedModuleId\n\t\t\treturn undefined\n\t\t},\n\t\tload(id) {\n\t\t\tif (id !== resolvedModuleId) return undefined\n\n\t\t\tfor (const location of locations) {\n\t\t\t\tconst fullPath = resolve(root, location)\n\t\t\t\tif (existsSync(fullPath)) {\n\t\t\t\t\tif (sideEffectOnly) return `import ${JSON.stringify(fullPath)}`\n\t\t\t\t\treturn `export { default } from ${JSON.stringify(fullPath)}`\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t`No file found for ${moduleId}. Expected one of:\\n${locations\n\t\t\t\t\t.map((location) => ` - ${resolve(root, location)}`)\n\t\t\t\t\t.join('\\n')}`,\n\t\t\t)\n\t\t},\n\t}\n}\n\nexport function createMswHandlersPlugin() {\n\treturn createVirtualFilePlugin({\n\t\tlocations: HANDLER_LOCATIONS,\n\t\tmoduleId: '@test/handlers',\n\t\tname: 'aamini-msw-handlers',\n\t})\n}\n\nexport function createStylesPlugin() {\n\treturn createVirtualFilePlugin({\n\t\tlocations: STYLES_LOCATIONS,\n\t\tmoduleId: '@test/styles',\n\t\tname: 'aamini-test-styles',\n\t\tsideEffectOnly: true,\n\t})\n}\n","import { nitro } from 'nitro/vite'\nimport { devtools } from '@tanstack/devtools-vite'\nimport { tanstackStart } from '@tanstack/react-start/plugin/vite'\nimport viteReact, { reactCompilerPreset } from '@vitejs/plugin-react'\nimport tailwindcss from '@tailwindcss/vite'\nimport babel from '@rolldown/plugin-babel'\nimport svgr from 'vite-plugin-svgr'\nimport { resolve } from 'node:path'\nimport {\n\tmergeConfig,\n\ttype UserConfig,\n\ttype TestProjectConfiguration,\n} from 'vite-plus'\nimport { playwright } from 'vite-plus/test/browser-playwright'\nimport {\n\tcreateMswHandlersPlugin,\n\tcreateStylesPlugin,\n} from './plugins/virtual-modules.ts'\n\nconst stylesSetup = '@aamini/config/setup/styles'\n\nexport const fmt = {\n\tsingleQuote: true,\n\tsemi: false,\n\tuseTabs: true,\n\texperimentalTailwindcss: {},\n\tprintWidth: 80,\n\texperimentalSortPackageJson: false,\n\tproseWrap: 'always',\n\tignorePatterns: [\n\t\t'**/.output',\n\t\t'**/dist/**',\n\t\t'pnpm-lock.yaml',\n\t\t'**/routeTree.gen.ts',\n\t],\n\toverrides: [\n\t\t{\n\t\t\tfiles: ['*.{yaml,yml}'],\n\t\t\toptions: { useTabs: false },\n\t\t},\n\t],\n} satisfies UserConfig['fmt']\n\nexport const lint = {\n\tplugins: [\n\t\t'eslint',\n\t\t'unicorn',\n\t\t'typescript',\n\t\t'oxc',\n\t\t'react',\n\t\t'react-perf',\n\t\t'import',\n\t\t'jsdoc',\n\t\t'jsx-a11y',\n\t\t'node',\n\t\t'promise',\n\t],\n\tcategories: {},\n\toptions: {\n\t\ttypeAware: true,\n\t\ttypeCheck: true,\n\t},\n\trules: {\n\t\t'no-empty-pattern': 'off',\n\t\t'no-console': ['error', { allow: ['warn', 'error'] }],\n\t},\n\tsettings: {\n\t\t'jsx-a11y': { components: {}, attributes: {} },\n\t\treact: { formComponents: [], linkComponents: [] },\n\t\tjsdoc: {\n\t\t\tignorePrivate: false,\n\t\t\tignoreInternal: false,\n\t\t\tignoreReplacesDocs: true,\n\t\t\toverrideReplacesDocs: true,\n\t\t\taugmentsExtendsReplacesDocs: false,\n\t\t\timplementsReplacesDocs: false,\n\t\t\texemptDestructuredRootsFromChecks: false,\n\t\t\ttagNamePreference: {},\n\t\t},\n\t},\n\tenv: { builtin: true },\n\tglobals: {},\n\tignorePatterns: ['**/dist/**'],\n} satisfies UserConfig['lint']\n\ninterface ProjectOverrides {\n\tserver?: TestProjectConfiguration\n\tbrowser?: TestProjectConfiguration\n}\n\nexport const test = (\n\tprojectOverrides?: ProjectOverrides,\n): UserConfig['test'] => ({\n\tpassWithNoTests: true,\n\tprojects: [\n\t\t{\n\t\t\textends: true,\n\t\t\ttest: {\n\t\t\t\tname: 'unit',\n\t\t\t\tinclude: ['src/**/*.test.unit.ts'],\n\t\t\t},\n\t\t},\n\t\tmergeConfig(\n\t\t\t{\n\t\t\t\textends: true,\n\t\t\t\tplugins: [createMswHandlersPlugin()],\n\t\t\t\ttest: {\n\t\t\t\t\tname: 'server',\n\t\t\t\t\tinclude: ['src/**/*.test.ts'],\n\t\t\t\t\ttestTimeout: 30_000,\n\t\t\t\t\tfileParallelism: false,\n\t\t\t\t},\n\t\t\t} satisfies TestProjectConfiguration as Record<string, unknown>,\n\t\t\t(projectOverrides?.server ?? {}) as Record<string, unknown>,\n\t\t),\n\t\tmergeConfig(\n\t\t\t{\n\t\t\t\textends: true,\n\t\t\t\tplugins: [createMswHandlersPlugin(), createStylesPlugin()],\n\t\t\t\ttest: {\n\t\t\t\t\tname: 'browser',\n\t\t\t\t\tinclude: ['src/**/*.test.tsx', 'tests/**/*.test.tsx'],\n\t\t\t\t\tsetupFiles: [stylesSetup],\n\t\t\t\t\tbrowser: {\n\t\t\t\t\t\tinstances: [{ browser: 'chromium' }],\n\t\t\t\t\t\tprovider: playwright(),\n\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\theadless: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} satisfies TestProjectConfiguration as Record<string, unknown>,\n\t\t\t(projectOverrides?.browser ?? {}) as Record<string, unknown>,\n\t\t),\n\t],\n})\n\nexport const createAppConfig = ({\n\troot = process.cwd(),\n\tprojectOverrides,\n}: {\n\troot?: string\n\tprojectOverrides?: ProjectOverrides\n}): UserConfig => ({\n\troot,\n\tresolve: {\n\t\ttsconfigPaths: true,\n\t\tdedupe: ['react', 'react-dom'],\n\t\talias: [\n\t\t\t{ find: '@/mocks', replacement: resolve(root, '__mocks__') },\n\t\t\t{ find: '@', replacement: resolve(root, 'src') },\n\t\t\t{ find: '@tests', replacement: resolve(root, 'tests') },\n\t\t],\n\t},\n\tplugins: [\n\t\ttanstackStart(),\n\t\t...(process.env.VITEST === 'true'\n\t\t\t? []\n\t\t\t: [devtools({ injectSource: { enabled: false } }), nitro()]),\n\t\ttailwindcss(),\n\t\tviteReact(),\n\t\tbabel({ presets: [reactCompilerPreset()] }),\n\t\tsvgr({\n\t\t\tinclude: '**/*.svg',\n\t\t\tsvgrOptions: { exportType: 'default' },\n\t\t}),\n\t],\n\tfmt: fmt,\n\tlint: lint,\n\tstaged: {\n\t\t'*.{js,ts,tsx}': 'vp check --fix',\n\t},\n\ttest: test(projectOverrides),\n})\n"],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "extends": "./tsconfig.strict.json",
4
- "compilerOptions": {
5
- "noEmit": true,
6
- "declaration": true,
7
- "declarationMap": true,
8
- "esModuleInterop": true,
9
- "incremental": false,
10
- "isolatedModules": true,
11
- "lib": ["es2022", "DOM", "DOM.Iterable"],
12
- "module": "NodeNext",
13
- "moduleDetection": "force",
14
- "moduleResolution": "NodeNext",
15
- "resolveJsonModule": true,
16
- "skipLibCheck": true,
17
- "target": "ES2022"
18
- }
19
- }
@@ -1,17 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "extends": "./tsconfig.strict.json",
4
- "compilerOptions": {
5
- "target": "ES2022",
6
- "jsx": "react-jsx",
7
- "module": "ESNext",
8
- "lib": ["ES2022", "DOM", "DOM.Iterable"],
9
- "types": ["vite-plus/client"],
10
-
11
- /* Bundler mode */
12
- "moduleResolution": "bundler",
13
- "allowImportingTsExtensions": true,
14
- "verbatimModuleSyntax": false,
15
- "noEmit": true
16
- }
17
- }