aboutsummaryrefslogtreecommitdiffstats
path: root/webpack.config.js
diff options
context:
space:
mode:
authorLibravatar Ricardo <ricardo@cino.io>2023-10-13 14:12:03 +0200
committerLibravatar GitHub <noreply@github.com>2023-10-13 13:12:03 +0100
commite503468660a13760010a94ecda5f0625c6f47f87 (patch)
treefa532f54fc5f091de08d55405ec6339bd2440a02 /webpack.config.js
parent1.3.16 [skip ci] (diff)
downloadferdium-server-e503468660a13760010a94ecda5f0625c6f47f87.tar.gz
ferdium-server-e503468660a13760010a94ecda5f0625c6f47f87.tar.zst
ferdium-server-e503468660a13760010a94ecda5f0625c6f47f87.zip
Server re-build with latest AdonisJS framework & Typescript (#47)
* chore: setup first basis structure * chore: ensure styling is loaded correctly * chore: comply to new routing syntax by replace . with / in routes/resource locations * chore: add login controller * chore: correctly use views with slash instead of dot * chore: working login + tests * chore: clean up tests * chore: add password-forgot endpoint and matching test * chore: add delete page test * chore: add logout test * chore: add reset-password route and tests * chore: remove obsolete comment * chore: add account-page and tests * chore: add data page & first step of the test * chore: add transfer/import data feature and tests * chore: add export and basic test * chore: add all static api routes with tests * Regenerate 'pnpm-lock.json' and fix bad merge conflict WIP: - Tests have been commented out since they dont work - Server doesn't start * easier dev and test runs * - remove --require-pragma from reformat-files so formatting works properly - run pnpm reformat-files over codebase - remove .json files from .eslintignore - add invalid.json file to .eslintignore - configure prettier properly in eslint config - add type jsdoc to prettier config - run adonis generate:manifest command to regenerate ace-manifest.json - specify volta in package.json - introduce typecheck npm script - remove unused .mjs extension from npm scripts - install missing type definition dependencies - add pnpm.allowedDeprecatedVersions to package.json - fix invalid extends in tsconfig.json causing TS issues throughout codebase - remove @ts-ignore throughout codebase which is not relevant anymore - enable some of the tsconfig options - remove outdated eslint-disable from codebase - change deprecated faker.company.companyName() to faker.company.name() - fix TS issues inside transfer.spec.ts * - update to latest node and pnpm versions - upgrade all non-major dependencies to latest - install missing @types/luxon dependency - add cuid to pnpm.allowedDeprecatedVersions - add esModuleInterop config option to tsconfig - migrate more deprecated faker methods to new ones - add more temporary ts-ignore to code * - update eslint config - remove trailingComma: all since default in prettier v3 - add typecheck command to prepare-code npm script - upgrade various dependencies to latest major version - update tsconfig to include only useful config options - disable some lint issues and fix others * - add test command to prepare-code - disable strictPropertyInitialization flag in tsconfig which creates issues with adonis models - update precommit hook to excute pnpm prepare-code - remove ts-ignore statements from all models * fix node and pnpm dependency update * add cross env (so that we can develop on windows) * add signup endpoint (TODO: JWT auth) * Add login endpoint * Add me and updateMe endpoints * Add service endpoint * refactor: change endpoints to use jwt * add recipes endpoint * add workspaces endpoint * fix web controllors for login and post import * Update node deps * Change auth middleware (for web) and exempt api from CSRF * Add import endpoint (franz import) * Fix export/import logic * Fix service and workspace data in user/data * Fix partial lint * chore: workaround lint issues * fix: migration naming had two . * Sync back node with recipes repo * Temporarily ignore typescript * Fix adonisrc to handle public folder static assets * Fix issue with production database * add Legacy Password Provider * Fix lint errors * Fix issue on login errors frontend * add Legacy Password Provider * Fix issue with customIcons * Fix issue with auth tokens * Update 'node' to '18.18.0' * make docker work * improve docker entrypoint (test api performance) * Add migration database script * NODE_ENV on recipes * prefer @ts-expect-error over @ts-ignore * small fixes * Update 'pnpm' to '8.7.6' * fix error catch * Automatically generate JWT Public and Private keys * Use custom Adonis5-jwt * Update code to use secret (old way, no breaking changes) * Normalize appKey * Trick to make JWT tokens on client work with new version * Fix error with new JWT logic * Change migration and how we store JWT * Fix 500 response code (needs to be 401) * Improve logic and fix bugs * Fix build and entrypoint logic * Catch error if appKey changes * Add newToken logic * Fix lint (ignore any errors) * Add build for PRs * pnpm reformat-files result * Fix some tests * Fix reset password not working (test failing) * Restore csrfTokens (disabled by accident) * Fix pnpm start command with .env * Disable failing tests on the transfer endpoint (TODO) * Add tests to PR build * Fix build * Remove unnecessary assertStatus * Add typecheck * hash password on UserFactory (fix build) * Add JWT_USE_PEM true by default (increase security) * fix name of github action --------- Co-authored-by: Vijay A <vraravam@users.noreply.github.com> Co-authored-by: Balaji Vijayakumar <kuttibalaji.v6@gmail.com> Co-authored-by: MCMXC <16797721+mcmxcdev@users.noreply.github.com> Co-authored-by: André Oliveira <oliveira.andrerodrigues95@gmail.com>
Diffstat (limited to 'webpack.config.js')
-rw-r--r--webpack.config.js213
1 files changed, 213 insertions, 0 deletions
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..9743941
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,213 @@
1const { join } = require('node:path');
2const Encore = require('@symfony/webpack-encore');
3
4/*
5|--------------------------------------------------------------------------
6| Encore runtime environment
7|--------------------------------------------------------------------------
8*/
9if (!Encore.isRuntimeEnvironmentConfigured()) {
10 Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
11}
12
13/*
14|--------------------------------------------------------------------------
15| Output path
16|--------------------------------------------------------------------------
17|
18| The output path for writing the compiled files. It should always
19| be inside the public directory, so that AdonisJS can serve it.
20|
21*/
22Encore.setOutputPath('./public/assets');
23
24/*
25|--------------------------------------------------------------------------
26| Public URI
27|--------------------------------------------------------------------------
28|
29| The public URI to access the static files. It should always be
30| relative from the "public" directory.
31|
32*/
33Encore.setPublicPath('/assets');
34
35/*
36|--------------------------------------------------------------------------
37| Entrypoints
38|--------------------------------------------------------------------------
39|
40| Entrypoints are script files that boots your frontend application. Ideally
41| a single entrypoint is used by majority of applications. However, feel
42| free to add more (if required).
43|
44| Also, make sure to read the docs on "Assets bundler" to learn more about
45| entrypoints.
46|
47*/
48Encore.addEntry('app', './resources/js/app.js');
49
50/*
51|--------------------------------------------------------------------------
52| Copy assets
53|--------------------------------------------------------------------------
54|
55| Since the edge templates are not part of the Webpack compile lifecycle, any
56| images referenced by it will not be processed by Webpack automatically. Hence
57| we must copy them manually.
58|
59*/
60// Encore.copyFiles({
61// from: './resources/images',
62// to: 'images/[path][name].[hash:8].[ext]',
63// })
64
65/*
66|--------------------------------------------------------------------------
67| Split shared code
68|--------------------------------------------------------------------------
69|
70| Instead of bundling duplicate code in all the bundles, generate a separate
71| bundle for the shared code.
72|
73| https://symfony.com/doc/current/frontend/encore/split-chunks.html
74| https://webpack.js.org/plugins/split-chunks-plugin/
75|
76*/
77// Encore.splitEntryChunks()
78
79/*
80|--------------------------------------------------------------------------
81| Isolated entrypoints
82|--------------------------------------------------------------------------
83|
84| Treat each entry point and its dependencies as its own isolated module.
85|
86*/
87Encore.disableSingleRuntimeChunk();
88
89/*
90|--------------------------------------------------------------------------
91| Cleanup output folder
92|--------------------------------------------------------------------------
93|
94| It is always nice to cleanup the build output before creating a build. It
95| will ensure that all unused files from the previous build are removed.
96|
97*/
98Encore.cleanupOutputBeforeBuild();
99/*
100|--------------------------------------------------------------------------
101| Source maps
102|--------------------------------------------------------------------------
103|
104| Enable source maps in production
105|
106*/
107Encore.enableSourceMaps(!Encore.isProduction());
108
109/*
110|--------------------------------------------------------------------------
111| Assets versioning
112|--------------------------------------------------------------------------
113|
114| Enable assets versioning to leverage lifetime browser and CDN cache
115|
116*/
117Encore.enableVersioning(Encore.isProduction());
118
119/*
120|--------------------------------------------------------------------------
121| Configure dev server
122|--------------------------------------------------------------------------
123|
124| Here we configure the dev server to enable live reloading for edge templates.
125| Remember edge templates are not processed by Webpack and hence we need
126| to watch them explicitly and livereload the browser.
127|
128*/
129Encore.configureDevServerOptions(options => {
130 /**
131 * Normalize "options.static" property to an array
132 */
133 if (!options.static) {
134 options.static = [];
135 } else if (!Array.isArray(options.static)) {
136 options.static = [options.static];
137 }
138
139 /**
140 * Enable live reload and add views directory
141 */
142 options.liveReload = true;
143 options.static.push({
144 directory: join(__dirname, './resources/views'),
145 watch: true,
146 });
147});
148
149/*
150|--------------------------------------------------------------------------
151| CSS precompilers support
152|--------------------------------------------------------------------------
153|
154| Uncomment one of the following lines of code to enable support for your
155| favorite CSS precompiler
156|
157*/
158// Encore.enableSassLoader()
159// Encore.enableLessLoader()
160// Encore.enableStylusLoader()
161
162/*
163|--------------------------------------------------------------------------
164| CSS loaders
165|--------------------------------------------------------------------------
166|
167| Uncomment one of the following line of code to enable support for
168| PostCSS or CSS.
169|
170*/
171// Encore.enablePostCssLoader()
172// Encore.configureCssLoader(() => {})
173
174/*
175|--------------------------------------------------------------------------
176| Enable Vue loader
177|--------------------------------------------------------------------------
178|
179| Uncomment the following lines of code to enable support for vue. Also make
180| sure to install the required dependencies.
181|
182*/
183// Encore.enableVueLoader(() => {}, {
184// version: 3,
185// runtimeCompilerBuild: false,
186// useJsx: false
187// })
188
189/*
190|--------------------------------------------------------------------------
191| Configure logging
192|--------------------------------------------------------------------------
193|
194| To keep the terminal clean from unnecessary info statements , we only
195| log warnings and errors. If you want all the logs, you can change
196| the level to "info".
197|
198*/
199const config = Encore.getWebpackConfig();
200config.infrastructureLogging = {
201 level: 'warn',
202};
203config.stats = 'errors-warnings';
204
205/*
206|--------------------------------------------------------------------------
207| Export config
208|--------------------------------------------------------------------------
209|
210| Export config for webpack to do its job
211|
212*/
213module.exports = config;