lucy-cli 0.9.3 → 0.9.5

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.
package/README.md CHANGED
@@ -44,7 +44,7 @@ Lucy-CLI is designed to streamline the setup and management of TypeScript within
44
44
  8. **Wix NPM Package Installation**
45
45
  - Lucy-CLI can install Wix npm packages from the `lucy.json` file in the project directory.
46
46
 
47
- 9. **Teting with Jest**
47
+ 9. **Teting with Vitest(Not working)**
48
48
  - Lucy-CLI can run tests with Jest.
49
49
  - It runs tests located backend folder with the file name ending with `.spec.ts`.
50
50
  - it creates a code coverage report in the coverage folder in the lib folders and typescript folders.
package/dist/Gulpfile.js CHANGED
@@ -19,7 +19,6 @@ import { addTypes, updateWixTypes } from './gulp/types.js';
19
19
  import { setProdConfig } from './gulp/pipeline.js';
20
20
  import { watchAll } from './gulp/watchers.js';
21
21
  import { green, magenta, orange, red } from './index.js';
22
- import { test } from './gulp/test.js';
23
22
  import { getModulesSync } from './gulp/helpers.js';
24
23
  const sass = gulpSass(dartSass);
25
24
  const outputDir = './src';
@@ -48,7 +47,11 @@ gulp.task('build-backend', gulp.parallel(buildBackend(taskOptions), buildBackend
48
47
  gulp.task('build-public', gulp.parallel(buildPublic(taskOptions)));
49
48
  gulp.task('preview-templates', gulp.parallel(previewTemplates(taskOptions)));
50
49
  gulp.task('copy-files', gulp.parallel(copyFiles(taskOptions)));
51
- gulp.task('test', gulp.parallel(test(taskOptions)));
50
+ gulp.task('test', gulp.parallel(
51
+ // test(taskOptions),
52
+ shell.task([
53
+ 'sleep 2; yarn test',
54
+ ])));
52
55
  gulp.task('sync-types', shell.task([
53
56
  'yarn postinstall',
54
57
  ]));
@@ -64,10 +67,14 @@ gulp.task('gen-docs', shell.task([
64
67
  'yarn docs',
65
68
  ]));
66
69
  gulp.task('fix-wix', gulp.series(cleanWix(), 'sync-types', 'fix-wixtypes', 'add-wix-types'));
67
- gulp.task('build', gulp.parallel('build-backend', 'build-public', buildPages(taskOptions), compileScss(taskOptions), 'copy-files'));
68
- gulp.task('build-pipeline', gulp.series(cleanSrc(taskOptions), 'set-production', 'fix-wixtypes', 'add-wix-types', 'test', 'build'));
70
+ gulp.task('build', gulp.parallel('build-backend', 'build-public', 'preview-templates', buildPages(taskOptions), compileScss(taskOptions), 'copy-files'));
71
+ gulp.task('build-pipeline', gulp.series(cleanSrc(taskOptions), 'set-production', 'fix-wixtypes', 'add-wix-types',
72
+ // 'test',
73
+ 'build'));
69
74
  gulp.task('build-prod', gulp.series((done) => checkPages(true, false).then(() => done(), (err) => done(err)), cleanSrc(taskOptions), 'set-production', 'fix-wix', 'build-backend', 'build-public', buildPages(taskOptions), 'copy-files', compileScss(taskOptions), 'gen-docs'));
70
- gulp.task('start-dev-env', gulp.parallel(watchAll(taskOptions), 'test', 'start-wix', (done) => checkPages(false, taskOptions.moduleSettings?.force ?? false).then(() => done(), (err) => done(err))));
75
+ gulp.task('start-dev-env', gulp.parallel(watchAll(taskOptions),
76
+ // 'test',
77
+ 'start-wix', (done) => checkPages(false, taskOptions.moduleSettings?.force ?? false).then(() => done(), (err) => done(err))));
71
78
  gulp.task('dev', gulp.series(cleanSrc(taskOptions), 'fix-wix', 'build', 'start-dev-env'));
72
79
  async function gulpTaskRunner(task) {
73
80
  return new Promise(function (resolve, reject) {
@@ -19,7 +19,7 @@ export function previewTemplates(options) {
19
19
  `${folder}/backend/templates/data/*.json`,
20
20
  `!${folder}/backend/templates/render.ts`,
21
21
  ])
22
- .pipe(exec((file) => `npx ts-node-esm -T ${file.path}`, taskOpt))
22
+ .pipe(exec((file) => `npx tsx --tsconfig ${file.dirname}/../../local.tsconfig.json ${file.path}`, taskOpt))
23
23
  .on('error', function (e) {
24
24
  console.log("💩" + red.underline.bold(` => Render of Template for ${orange(folder)} failed!`));
25
25
  console.log("💩" + red.underline.bold(` => Error: ${orange(e.message)}`));
package/dist/gulp/test.js CHANGED
@@ -2,51 +2,30 @@ import gulp from 'gulp';
2
2
  import { blue, orange, red } from '../index.js';
3
3
  import gulpJest from 'gulp-jest';
4
4
  const jest = gulpJest.default;
5
+ const taskOpt = {
6
+ continueOnError: true,
7
+ };
5
8
  export function test(options) {
6
9
  const folders = ['typescript'];
7
- if (options.modulesSync) {
8
- for (const module of Object.keys(options.modulesSync)) {
9
- folders.push(module);
10
- }
11
- }
10
+ // if (options.modulesSync){
11
+ // for (const module of Object.keys(options.modulesSync)) {
12
+ // folders.push(module);
13
+ // }
14
+ // }
12
15
  // Create tasks for each folder
13
16
  const tasks = folders.map((folder) => {
14
- const taskName = `tests-${folder}`; // Create a unique name for each task
17
+ const taskName = `tests-coverage-${folder}`; // Create a unique name for each task
15
18
  const task = () => gulp.src([
16
19
  `${folder}/backend/**/*.spec.ts`,
17
20
  ])
18
- .pipe(jest({
19
- verbose: true,
20
- extensionsToTreatAsEsm: ['.ts'],
21
- transform: {
22
- '^.+\\.tsx?$': [
23
- 'ts-jest',
24
- {
25
- tsconfig: `./${folder}/tsconfig.json`,
26
- usESM: true,
27
- },
28
- ],
29
- },
30
- preset: 'ts-jest',
31
- setupFilesAfterEnv: [],
32
- testEnvironment: 'node',
33
- collectCoverage: true,
34
- coverageDirectory: './coverage',
35
- coverageReporters: ['clover', 'json', 'lcov', 'text'],
36
- rootDir: `./${folder}`,
37
- testMatch: ['**/*.spec.ts'],
38
- passWithNoTests: true,
39
- moduleNameMapper: {
40
- 'public/(.*)': '<rootDir>/public/$1'
41
- }
42
- }))
21
+ .pipe(exec((file) => `yarn coverage`, taskOpt))
43
22
  .on('error', function (e) {
44
- console.log("💩" + red.underline.bold(` => Tests for ${orange(folder)} failed!`));
23
+ console.log("💩" + red.underline.bold(` => Failed to generate coverage for ${orange(folder)} failed!`));
45
24
  console.log("💩" + red.underline.bold(` => Error: ${orange(e.message)}`));
46
25
  this.emit('end');
47
26
  })
48
27
  .on('end', function () {
49
- console.log("🐶" + blue.underline(` => Tests for ${orange(folder)} succeeded!`));
28
+ console.log("🐶" + blue.underline(` => Coverage for ${orange(folder)} succeeded!`));
50
29
  });
51
30
  // Register the task with Gulp
52
31
  Object.defineProperty(task, 'name', { value: taskName }); // Set a unique name for debugging
@@ -54,4 +33,47 @@ export function test(options) {
54
33
  });
55
34
  // Run all tasks in parallel
56
35
  return gulp.parallel(...tasks);
36
+ // return () => {
37
+ // return gulp.src([
38
+ // ...folders.map(folder => `${folder}/backend/**/*.spec.ts`)
39
+ // ])
40
+ // .pipe(jest({
41
+ // verbose: true,
42
+ // extensionsToTreatAsEsm: ['.ts'],
43
+ // transform: {
44
+ // '^.+\\.tsx?$': [
45
+ // 'ts-jest',
46
+ // {
47
+ // tsconfig: `./typescript/tsconfig.json`,
48
+ // usESM: true,
49
+ // },
50
+ // ],
51
+ // },
52
+ // preset: 'ts-jest',
53
+ // setupFilesAfterEnv: [],
54
+ // testEnvironment: 'node',
55
+ // collectCoverage: true,
56
+ // coverageDirectory: './coverage',
57
+ // coverageReporters: ['clover', 'json', 'lcov', 'text'],
58
+ // rootDir: `./typescript`,
59
+ // roots: [`.`],
60
+ // testMatch: ['**/*.spec.ts'],
61
+ // passWithNoTests: true,
62
+ // moduleNameMapper: {
63
+ // 'public/(.*)': [...folders.map(folder => `${folder}/$1`)],
64
+ // 'backend/(.*)': [...folders.map(folder => `${folder}/$1`)],
65
+ // }
66
+ // }))
67
+ // .on('error', function (e: Error) {
68
+ // console.log("💩" + red.underline.bold(` => Tests for failed!`));
69
+ // console.log("💩" + red.underline.bold(` => Error: ${orange(e.message)}`));
70
+ // this.emit('end');
71
+ // })
72
+ // .on('end', function () {
73
+ // console.log("🐶" + blue.underline(` => Tests succeeded!`));
74
+ // });
75
+ // }
76
+ }
77
+ function exec(arg0, taskOpt) {
78
+ throw new Error('Function not implemented.');
57
79
  }
@@ -6,7 +6,6 @@ import { buildPages } from './pages.js';
6
6
  import { copyFiles } from './copy.js';
7
7
  import { previewTemplates } from './templates.js';
8
8
  import { checkTs } from './checks.js';
9
- import { test } from './test.js';
10
9
  let taskOptions;
11
10
  export function watchSCSS() {
12
11
  return gulp.watch([
@@ -17,16 +16,15 @@ export function watchBackend() {
17
16
  return gulp.watch([
18
17
  '*/backend/**/*.ts',
19
18
  '*/backend/**/*.tsx',
20
- '!*/backend/**/*.spec.ts',
21
19
  '!*/backend/**/*.jsw.ts',
22
20
  '!src/**/**',
23
- ], gulp.parallel(test(taskOptions), checkTs(taskOptions), buildBackend(taskOptions)));
21
+ ], gulp.parallel(checkTs(taskOptions), buildBackend(taskOptions)));
24
22
  }
25
23
  export function watchPublic() {
26
24
  return gulp.watch([
27
25
  '*/public/**/*.ts',
28
26
  '*/public/**/*.tsx',
29
- ], gulp.parallel(test(taskOptions), checkTs(taskOptions), buildPublic(taskOptions)));
27
+ ], gulp.parallel(checkTs(taskOptions), buildPublic(taskOptions)));
30
28
  }
31
29
  export function watchPages() {
32
30
  return gulp.watch('typescript/pages/**/*.ts', gulp.parallel(checkTs(taskOptions), buildPages(taskOptions)));
@@ -45,7 +43,7 @@ export function watchTemplates() {
45
43
  '*/backend/templates/**/*.tsx',
46
44
  '*/backend/templates/data/*.json',
47
45
  '!*/backend/templates/render.ts',
48
- ], gulp.parallel(previewTemplates(taskOptions), test(taskOptions), checkTs(taskOptions)));
46
+ ], gulp.parallel(previewTemplates(taskOptions), checkTs(taskOptions)));
49
47
  }
50
48
  export function watchTypes() {
51
49
  return gulp.watch([
@@ -13,6 +13,7 @@
13
13
  "wixPackages": {},
14
14
  "devPackages": {
15
15
  "@eslint/js": "^9.15.0",
16
+ "@okee-tech/eslint-plugin-neverthrow": "^1.0.3",
16
17
  "@styled/typescript-styled-plugin": "^1.0.1",
17
18
  "@total-typescript/ts-reset": "^0.6.1",
18
19
  "@types/jest": "^29.5.14",
@@ -28,24 +29,27 @@
28
29
  "cypress-cloud": "^1.11.0",
29
30
  "esbuild": "^0.24.0",
30
31
  "eslint": "^9.15.0",
32
+ "eslint-plugin-exception-handling": "^1.5.4",
31
33
  "eslint-plugin-import": "^2.31.0",
32
34
  "eslint-plugin-jsdoc": "^50.5.0",
33
35
  "eslint-plugin-named-import-spacing": "^1.0.3",
36
+ "eslint-plugin-promise": "^7.2.1",
34
37
  "eslint-plugin-simple-import-sort": "^12.1.1",
35
- "jest": "^29.7.0",
36
38
  "prettier": "^3.3.3",
37
39
  "react": "^18.3.1",
38
40
  "sass": "^1.81.0",
39
- "ts-jest": "^29.2.5",
40
41
  "ts-node": "^10.9.2",
41
42
  "tsx": "^4.19.2",
42
- "typedoc": "^0.26.11",
43
+ "typedoc": "0.27.1",
43
44
  "typedoc-plugin-merge-modules": "^6.0.3",
44
45
  "typedoc-plugin-zod": "^1.3.0",
45
46
  "typedoc-theme-hierarchy": "^5.0.3",
46
47
  "typescript": "5.6.3",
47
48
  "typescript-eslint": "^8.15.0",
48
- "typescript-eslint-language-service": "^5.0.5"
49
+ "typescript-eslint-language-service": "^5.0.5",
50
+ "vitest": "^2.1.8",
51
+ "vitest-tsconfig-paths": "^3.4.1",
52
+ "vite-tsconfig-paths": "^5.1.4"
49
53
  },
50
54
  "scripts": {
51
55
  "postinstall": "wix sync-types",
@@ -56,8 +60,8 @@
56
60
  "build": "lucy-cli build-prod",
57
61
  "fix-wix": "lucy-cli fix-wix",
58
62
  "tsc": "tsc -p ./typescript/tsconfig.json --noEmit",
59
- "test": "jest --config jest.config.ts --passWithNoTests",
60
- "test:watch": "jest --config jest.config.ts --watch",
63
+ "test": "vitest --ui",
64
+ "coverage": "vitest run --coverage",
61
65
  "cypress": "cypress open",
62
66
  "e2e": "cypress-cloud run --parallel --record"
63
67
  }
@@ -0,0 +1,17 @@
1
+ // eslint-disable-next-line @typescript-eslint/naming-convention
2
+ import tsconfigPaths from 'vite-tsconfig-paths';
3
+ import { defineConfig } from 'vitest/config';
4
+
5
+ export default defineConfig({
6
+ plugins: [tsconfigPaths({
7
+ projects: ['./typescript/tsconfig.json'],
8
+ })],
9
+ test: {
10
+ coverage: {
11
+ provider: 'v8',
12
+ reporter: ['text', 'json', 'html'],
13
+ reportsDirectory: './coverage',
14
+ exclude: ['**/node_modules/**', 'src/**', '.wix/**'],
15
+ },
16
+ },
17
+ });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "lucy-cli",
4
- "version": "0.9.3",
4
+ "version": "0.9.5",
5
5
  "description": "Lucy Framework for WIX Studio Editor",
6
6
  "main": ".dist/index.js",
7
7
  "scripts": {
@@ -68,8 +68,8 @@
68
68
  "ts-node": "^10.9.1",
69
69
  "typedoc": "0.26.11",
70
70
  "typedoc-theme-hierarchy": "5.0.3",
71
- "velo-sync": "^0.0.9",
72
- "typescript": "^5.6.3"
71
+ "typescript": "^5.6.3",
72
+ "velo-sync": "^0.0.9"
73
73
  },
74
74
  "devDependencies": {
75
75
  "@types/fs-extra": "^11.0.4",
package/src/Gulpfile.ts CHANGED
@@ -96,9 +96,13 @@ gulp.task('copy-files', gulp.parallel(
96
96
  ));
97
97
 
98
98
  gulp.task('test', gulp.parallel(
99
- test(taskOptions),
99
+ // test(taskOptions),
100
+ shell.task([
101
+ 'sleep 2; yarn test',
102
+ ])
100
103
  ));
101
104
 
105
+
102
106
  gulp.task('sync-types', shell.task([
103
107
  'yarn postinstall',
104
108
  ]));
@@ -133,6 +137,7 @@ gulp.task('fix-wix', gulp.series(
133
137
  gulp.task('build', gulp.parallel(
134
138
  'build-backend',
135
139
  'build-public',
140
+ 'preview-templates',
136
141
  buildPages(taskOptions),
137
142
  compileScss(taskOptions),
138
143
  'copy-files'
@@ -144,7 +149,7 @@ gulp.task('build-pipeline', gulp.series(
144
149
  'set-production',
145
150
  'fix-wixtypes',
146
151
  'add-wix-types',
147
- 'test',
152
+ // 'test',
148
153
  'build',
149
154
  ));
150
155
 
@@ -164,7 +169,7 @@ gulp.task('build-prod', gulp.series(
164
169
 
165
170
  gulp.task('start-dev-env', gulp.parallel(
166
171
  watchAll(taskOptions),
167
- 'test',
172
+ // 'test',
168
173
  'start-wix',
169
174
  (done) => checkPages(false, taskOptions.moduleSettings?.force ?? false).then(() => done(), (err) => done(err)),
170
175
  ));
@@ -24,7 +24,7 @@ export function previewTemplates(options: TaskOptions) {
24
24
  `${folder}/backend/templates/data/*.json`,
25
25
  `!${folder}/backend/templates/render.ts`,
26
26
  ])
27
- .pipe(exec((file: File) => `npx ts-node-esm -T ${file.path}`, taskOpt))
27
+ .pipe(exec((file: File) => `npx tsx --tsconfig ${file.dirname}/../../local.tsconfig.json ${file.path}`, taskOpt))
28
28
  .on('error', function (e: Error) {
29
29
  console.log("💩" + red.underline.bold(` => Render of Template for ${orange(folder)} failed!`));
30
30
  console.log("💩" + red.underline.bold(` => Error: ${orange(e.message)}`));
package/src/gulp/test.ts CHANGED
@@ -4,53 +4,32 @@ import gulpJest from 'gulp-jest';
4
4
  import { TaskOptions } from '../Gulpfile.js';
5
5
  const jest = gulpJest.default;
6
6
 
7
+ const taskOpt = {
8
+ continueOnError: true,
9
+ };
7
10
  export function test(options: TaskOptions) {
8
11
  const folders = ['typescript'];
9
- if (options.modulesSync){
10
- for (const module of Object.keys(options.modulesSync)) {
11
- folders.push(module);
12
- }
13
- }
12
+ // if (options.modulesSync){
13
+ // for (const module of Object.keys(options.modulesSync)) {
14
+ // folders.push(module);
15
+ // }
16
+ // }
14
17
 
15
18
  // Create tasks for each folder
16
19
  const tasks = folders.map((folder) => {
17
- const taskName = `tests-${folder}`; // Create a unique name for each task
20
+ const taskName = `tests-coverage-${folder}`; // Create a unique name for each task
18
21
  const task = () =>
19
22
  gulp.src([
20
23
  `${folder}/backend/**/*.spec.ts`,
21
24
  ])
22
- .pipe(jest({
23
- verbose: true,
24
- extensionsToTreatAsEsm: ['.ts'],
25
- transform: {
26
- '^.+\\.tsx?$': [
27
- 'ts-jest',
28
- {
29
- tsconfig: `./${folder}/tsconfig.json`,
30
- usESM: true,
31
- },
32
- ],
33
- },
34
- preset: 'ts-jest',
35
- setupFilesAfterEnv: [],
36
- testEnvironment: 'node',
37
- collectCoverage: true,
38
- coverageDirectory: './coverage',
39
- coverageReporters: ['clover', 'json', 'lcov', 'text'],
40
- rootDir: `./${folder}`,
41
- testMatch: ['**/*.spec.ts'],
42
- passWithNoTests: true,
43
- moduleNameMapper: {
44
- 'public/(.*)': '<rootDir>/public/$1'
45
- }
46
- }))
25
+ .pipe(exec((file: File) => `yarn coverage`, taskOpt))
47
26
  .on('error', function (e: Error) {
48
- console.log("💩" + red.underline.bold(` => Tests for ${orange(folder)} failed!`));
27
+ console.log("💩" + red.underline.bold(` => Failed to generate coverage for ${orange(folder)} failed!`));
49
28
  console.log("💩" + red.underline.bold(` => Error: ${orange(e.message)}`));
50
29
  this.emit('end');
51
30
  })
52
31
  .on('end', function () {
53
- console.log("🐶" + blue.underline(` => Tests for ${orange(folder)} succeeded!`));
32
+ console.log("🐶" + blue.underline(` => Coverage for ${orange(folder)} succeeded!`));
54
33
  });
55
34
 
56
35
  // Register the task with Gulp
@@ -60,4 +39,49 @@ export function test(options: TaskOptions) {
60
39
 
61
40
  // Run all tasks in parallel
62
41
  return gulp.parallel(...tasks);
63
- }
42
+
43
+ // return () => {
44
+ // return gulp.src([
45
+ // ...folders.map(folder => `${folder}/backend/**/*.spec.ts`)
46
+ // ])
47
+ // .pipe(jest({
48
+ // verbose: true,
49
+ // extensionsToTreatAsEsm: ['.ts'],
50
+ // transform: {
51
+ // '^.+\\.tsx?$': [
52
+ // 'ts-jest',
53
+ // {
54
+ // tsconfig: `./typescript/tsconfig.json`,
55
+ // usESM: true,
56
+ // },
57
+ // ],
58
+ // },
59
+ // preset: 'ts-jest',
60
+ // setupFilesAfterEnv: [],
61
+ // testEnvironment: 'node',
62
+ // collectCoverage: true,
63
+ // coverageDirectory: './coverage',
64
+ // coverageReporters: ['clover', 'json', 'lcov', 'text'],
65
+ // rootDir: `./typescript`,
66
+ // roots: [`.`],
67
+ // testMatch: ['**/*.spec.ts'],
68
+ // passWithNoTests: true,
69
+ // moduleNameMapper: {
70
+ // 'public/(.*)': [...folders.map(folder => `${folder}/$1`)],
71
+ // 'backend/(.*)': [...folders.map(folder => `${folder}/$1`)],
72
+ // }
73
+ // }))
74
+ // .on('error', function (e: Error) {
75
+ // console.log("💩" + red.underline.bold(` => Tests for failed!`));
76
+ // console.log("💩" + red.underline.bold(` => Error: ${orange(e.message)}`));
77
+ // this.emit('end');
78
+ // })
79
+ // .on('end', function () {
80
+ // console.log("🐶" + blue.underline(` => Tests succeeded!`));
81
+ // });
82
+ // }
83
+ }
84
+
85
+ function exec(arg0: (file: File) => string, taskOpt: { continueOnError: boolean; }): any {
86
+ throw new Error('Function not implemented.');
87
+ }
@@ -8,6 +8,7 @@ import { copyFiles } from './copy.js';
8
8
  import { previewTemplates } from './templates.js';
9
9
  import { checkPages, checkTs } from './checks.js';
10
10
  import { test } from './test.js';
11
+ import shell from 'gulp-shell';
11
12
 
12
13
  let taskOptions: TaskOptions;
13
14
 
@@ -23,11 +24,9 @@ export function watchBackend() {
23
24
  return gulp.watch([
24
25
  '*/backend/**/*.ts',
25
26
  '*/backend/**/*.tsx',
26
- '!*/backend/**/*.spec.ts',
27
27
  '!*/backend/**/*.jsw.ts',
28
28
  '!src/**/**',
29
29
  ], gulp.parallel(
30
- test(taskOptions),
31
30
  checkTs(taskOptions),
32
31
  buildBackend(taskOptions),
33
32
  )
@@ -39,7 +38,6 @@ export function watchPublic() {
39
38
  '*/public/**/*.ts',
40
39
  '*/public/**/*.tsx',
41
40
  ], gulp.parallel(
42
- test(taskOptions),
43
41
  checkTs(taskOptions),
44
42
  buildPublic(taskOptions),
45
43
  )
@@ -72,7 +70,6 @@ export function watchTemplates() {
72
70
  '!*/backend/templates/render.ts',
73
71
  ], gulp.parallel(
74
72
  previewTemplates(taskOptions),
75
- test(taskOptions),
76
73
  checkTs(taskOptions),
77
74
  )
78
75
  );
package/src/settings.json CHANGED
@@ -13,6 +13,7 @@
13
13
  "wixPackages": {},
14
14
  "devPackages": {
15
15
  "@eslint/js": "^9.15.0",
16
+ "@okee-tech/eslint-plugin-neverthrow": "^1.0.3",
16
17
  "@styled/typescript-styled-plugin": "^1.0.1",
17
18
  "@total-typescript/ts-reset": "^0.6.1",
18
19
  "@types/jest": "^29.5.14",
@@ -28,24 +29,27 @@
28
29
  "cypress-cloud": "^1.11.0",
29
30
  "esbuild": "^0.24.0",
30
31
  "eslint": "^9.15.0",
32
+ "eslint-plugin-exception-handling": "^1.5.4",
31
33
  "eslint-plugin-import": "^2.31.0",
32
34
  "eslint-plugin-jsdoc": "^50.5.0",
33
35
  "eslint-plugin-named-import-spacing": "^1.0.3",
36
+ "eslint-plugin-promise": "^7.2.1",
34
37
  "eslint-plugin-simple-import-sort": "^12.1.1",
35
- "jest": "^29.7.0",
36
38
  "prettier": "^3.3.3",
37
39
  "react": "^18.3.1",
38
40
  "sass": "^1.81.0",
39
- "ts-jest": "^29.2.5",
40
41
  "ts-node": "^10.9.2",
41
42
  "tsx": "^4.19.2",
42
- "typedoc": "^0.26.11",
43
+ "typedoc": "0.27.1",
43
44
  "typedoc-plugin-merge-modules": "^6.0.3",
44
45
  "typedoc-plugin-zod": "^1.3.0",
45
46
  "typedoc-theme-hierarchy": "^5.0.3",
46
47
  "typescript": "5.6.3",
47
48
  "typescript-eslint": "^8.15.0",
48
- "typescript-eslint-language-service": "^5.0.5"
49
+ "typescript-eslint-language-service": "^5.0.5",
50
+ "vitest": "^2.1.8",
51
+ "vitest-tsconfig-paths": "^3.4.1",
52
+ "vite-tsconfig-paths": "^5.1.4"
49
53
  },
50
54
  "scripts": {
51
55
  "postinstall": "wix sync-types",
@@ -56,8 +60,8 @@
56
60
  "build": "lucy-cli build-prod",
57
61
  "fix-wix": "lucy-cli fix-wix",
58
62
  "tsc": "tsc -p ./typescript/tsconfig.json --noEmit",
59
- "test": "jest --config jest.config.ts --passWithNoTests",
60
- "test:watch": "jest --config jest.config.ts --watch",
63
+ "test": "vitest --ui",
64
+ "coverage": "vitest run --coverage",
61
65
  "cypress": "cypress open",
62
66
  "e2e": "cypress-cloud run --parallel --record"
63
67
  }