aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/frontend/build.gradle
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-09-04 20:44:39 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-09-06 01:05:23 +0200
commit29919c02d86da10acf2b902fb9cab9998bb731a6 (patch)
treee4ac7dc9bc035327c720514363edee938248c14a /subprojects/frontend/build.gradle
parentrefactor(frontend): add eslint-plugin-mobx (diff)
downloadrefinery-29919c02d86da10acf2b902fb9cab9998bb731a6.tar.gz
refinery-29919c02d86da10acf2b902fb9cab9998bb731a6.tar.zst
refinery-29919c02d86da10acf2b902fb9cab9998bb731a6.zip
feat(frontend): XState statecharts
Expressing logic in statecharts for complex stateful behaviours should improve maintainability We use @xstate/cli to statically analyze statcharts before typechecking
Diffstat (limited to 'subprojects/frontend/build.gradle')
-rw-r--r--subprojects/frontend/build.gradle29
1 files changed, 27 insertions, 2 deletions
diff --git a/subprojects/frontend/build.gradle b/subprojects/frontend/build.gradle
index dd50860c..e57b2c4b 100644
--- a/subprojects/frontend/build.gradle
+++ b/subprojects/frontend/build.gradle
@@ -21,10 +21,15 @@ configurations {
21 21
22def installFrontend = tasks.named('installFrontend') 22def installFrontend = tasks.named('installFrontend')
23 23
24def sourcesWithoutTypegen = fileTree('src') {
25 exclude '**/*.typegen.ts'
26}
27
24def assembleFrontend = tasks.named('assembleFrontend') 28def assembleFrontend = tasks.named('assembleFrontend')
25assembleFrontend.configure { 29assembleFrontend.configure {
30 dependsOn generateXStateTypes
26 inputs.dir 'public' 31 inputs.dir 'public'
27 inputs.dir 'src' 32 inputs.files sourcesWithoutTypegen
28 inputs.file 'index.html' 33 inputs.file 'index.html'
29 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts') 34 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts')
30 inputs.file rootProject.file('yarn.lock') 35 inputs.file rootProject.file('yarn.lock')
@@ -37,9 +42,21 @@ artifacts {
37 } 42 }
38} 43}
39 44
45def generateXStateTypes = tasks.register('generateXStateTypes', RunYarn) {
46 dependsOn installFrontend
47 inputs.files sourcesWithoutTypegen
48 inputs.file 'package.json'
49 inputs.file rootProject.file('yarn.lock')
50 outputs.dir 'src'
51 script = 'run typegen'
52 description = 'Generate TypeScript typings for XState state machines.'
53}
54
40def typecheckFrontend = tasks.register('typecheckFrontend', RunYarn) { 55def typecheckFrontend = tasks.register('typecheckFrontend', RunYarn) {
41 dependsOn installFrontend 56 dependsOn installFrontend
57 dependsOn generateXStateTypes
42 inputs.dir 'src' 58 inputs.dir 'src'
59 inputs.dir 'types'
43 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json') 60 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json')
44 inputs.file rootProject.file('yarn.lock') 61 inputs.file rootProject.file('yarn.lock')
45 outputs.dir "${buildDir}/typescript" 62 outputs.dir "${buildDir}/typescript"
@@ -50,7 +67,9 @@ def typecheckFrontend = tasks.register('typecheckFrontend', RunYarn) {
50 67
51def lintFrontend = tasks.register('lintFrontend', RunYarn) { 68def lintFrontend = tasks.register('lintFrontend', RunYarn) {
52 dependsOn installFrontend 69 dependsOn installFrontend
70 dependsOn generateXStateTypes
53 inputs.dir 'src' 71 inputs.dir 'src'
72 inputs.dir 'types'
54 inputs.files('.eslintrc.cjs', 'prettier.config.cjs') 73 inputs.files('.eslintrc.cjs', 'prettier.config.cjs')
55 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json') 74 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json')
56 inputs.file rootProject.file('yarn.lock') 75 inputs.file rootProject.file('yarn.lock')
@@ -66,7 +85,9 @@ def lintFrontend = tasks.register('lintFrontend', RunYarn) {
66 85
67def prettier = tasks.register('fixFrontend', RunYarn) { 86def prettier = tasks.register('fixFrontend', RunYarn) {
68 dependsOn installFrontend 87 dependsOn installFrontend
88 dependsOn generateXStateTypes
69 inputs.dir 'src' 89 inputs.dir 'src'
90 inputs.dir 'types'
70 inputs.files('.eslintrc.cjs', 'prettier.config.cjs') 91 inputs.files('.eslintrc.cjs', 'prettier.config.cjs')
71 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json') 92 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json')
72 inputs.file rootProject.file('yarn.lock') 93 inputs.file rootProject.file('yarn.lock')
@@ -82,8 +103,9 @@ tasks.named('check') {
82 103
83tasks.register('serveFrontend', RunYarn) { 104tasks.register('serveFrontend', RunYarn) {
84 dependsOn installFrontend 105 dependsOn installFrontend
106 dependsOn generateXStateTypes
85 inputs.dir 'public' 107 inputs.dir 'public'
86 inputs.dir 'src' 108 inputs.files sourcesWithoutTypegen
87 inputs.file 'index.html' 109 inputs.file 'index.html'
88 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts') 110 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts')
89 inputs.file rootProject.file('yarn.lock') 111 inputs.file rootProject.file('yarn.lock')
@@ -95,6 +117,9 @@ tasks.register('serveFrontend', RunYarn) {
95 117
96tasks.named('clean') { 118tasks.named('clean') {
97 delete 'dev-dist' 119 delete 'dev-dist'
120 delete fileTree('src') {
121 include '**/*.typegen.ts'
122 }
98} 123}
99 124
100sonarqube.properties { 125sonarqube.properties {