Git Product home page Git Product logo

fs-routing's Introduction

Prototype of file system based routing in Vaadin

Findings and compromises:

  • export const meta = {} breaks HMR. vitejs/vite#4583
  • Main layout is hard coded
  • File watcher does not react to files being deleted
  • Lazy views
  • Use a faster alterantive for parsing TS
  • meta must be strictly valid JSON. Consider something like https://github.com/json5/json5 for a more relaxed syntax
  • Add support for route parameters
  • Avoid conflicts in views.ts when there are multiple views with the same function name
  • Configure Spring Security
  • Cache views.json in production mode instead of reading and parsing for each request
  • Avoid slow Java redeploy for views.json changes: server-side watcher to refresh security config, HMR or dev mode ws for metadata updates
  • Use view info on the server to return 404 for missing routes
  • Flow views are picked up only if at least one view was present when the server started
  • Use SessionRouteRegistry if available
  • Should read initial views.json content when starting to avoid an initial redeploy

fs-routing's People

Contributors

legioth avatar

Watchers

 avatar

Forkers

cromoteca

fs-routing's Issues

Error running on Windows

Running on Windows, I get the following

------------------ Starting Frontend compilation. ------------------
2023-12-22T14:21:30.345+02:00  INFO 207388 --- [onPool-worker-2] c.v.b.devserver.AbstractDevServerRunner  : Running Vite to compile frontend resources. This may take a moment, please stand by...
2023-12-22T14:21:32.655+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : Writing files {
2023-12-22T14:21:32.656+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   'about\\AboutView.tsx': { metaValue: '{\n  "title": "About"\n}', defaultName: 'AboutView' },
2023-12-22T14:21:32.656+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   'index.tsx': { metaValue: '{\n  "title": "Home"\n}', defaultName: 'Hello' },
2023-12-22T14:21:32.656+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   'MyView.tsx': { defaultName: 'MyView' }
2023-12-22T14:21:32.658+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : }
2023-12-22T14:21:32.674+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : [Error: ENOENT: no such file or directory, open 'C:\Users\Tarek Oraby\Downloads\fs-routing-main\fs-routing-main\target\classes\META-INF\VAADIN\views.json'] {
2023-12-22T14:21:32.674+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   errno: -4058,
2023-12-22T14:21:32.675+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   code: 'ENOENT',
2023-12-22T14:21:32.675+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   syscall: 'open',
2023-12-22T14:21:32.675+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   path: 'C:\\Users\\Tarek Oraby\\Downloads\\fs-routing-main\\fs-routing-main\\target\\classes\\META-INF\\VAADIN\\views.json'  
2023-12-22T14:21:32.676+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : }
2023-12-22T14:21:32.707+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : Hot update C:/Users/Tarek Oraby/Downloads/fs-routing-main/fs-routing-main/frontend/generated/views.ts
2023-12-22T14:21:32.722+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : 
2023-12-22T14:21:32.723+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   VITE v5.0.6  ready in 2295 ms

----------------- Frontend compiled successfully. -----------------

2023-12-22T14:21:32.724+02:00  INFO 207388 --- [onPool-worker-2] c.v.b.devserver.AbstractDevServerRunner  : Started Vite. Time: 5670ms
2023-12-22T14:21:32.724+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :
2023-12-22T14:21:32.725+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   Γ₧£  Local:   http://127.0.0.1:51495/VAADIN/
No views.json
2023-12-22T14:21:33.466+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : 14.21.33 [vite] Pre-transform error: Failed to resolve import "../views/aboutAboutView.js" from "frontend\generated\views.ts". Does the file exist?
No views.json
2023-12-22T14:21:36.809+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : 14.21.36 [vite] Internal server error: Failed to resolve import "../views/aboutAboutView.js" from "frontend\generated\views.ts". Does the file exist?
2023-12-22T14:21:36.810+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   Plugin: vite:import-analysis
2023-12-22T14:21:36.811+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   File: C:/Users/Tarek Oraby/Downloads/fs-routing-main/fs-routing-main/frontend/generated/views.ts:1:22
2023-12-22T14:21:36.811+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   1  |  import AboutView from '../views/about\AboutView.js';
2023-12-22T14:21:36.811+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :      |                         ^
2023-12-22T14:21:36.811+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   2  |  import Hello from '../views/index.js';
2023-12-22T14:21:36.813+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   3  |  import MyView from '../views/MyView.js';
2023-12-22T14:21:36.813+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at formatError (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:63007:46)
2023-12-22T14:21:36.814+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at TransformContext.error (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:63001:19)
2023-12-22T14:21:36.814+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at normalizeUrl (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:61282:33)
2023-12-22T14:21:36.815+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:61432:47
2023-12-22T14:21:36.816+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async Promise.all (index 0)
2023-12-22T14:21:36.816+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async TransformContext.transform (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:61353:13)
2023-12-22T14:21:36.817+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async Object.transform (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:63302:30)
2023-12-22T14:21:36.818+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async loadAndTransform (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:49045:29)
2023-12-22T14:21:36.818+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async viteTransformMiddleware (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:58643:32)
2023-12-22T14:21:36.908+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : 14.21.36 [vite] Internal server error: Failed to resolve import "../views/aboutAboutView.js" from "frontend\generated\views.ts". Does the file exist?
2023-12-22T14:21:36.910+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   Plugin: vite:import-analysis
2023-12-22T14:21:36.911+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   File: C:/Users/Tarek Oraby/Downloads/fs-routing-main/fs-routing-main/frontend/generated/views.ts:1:22
2023-12-22T14:21:36.911+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   1  |  import AboutView from '../views/about\AboutView.js';
2023-12-22T14:21:36.911+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :      |                         ^
2023-12-22T14:21:36.911+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   2  |  import Hello from '../views/index.js';
2023-12-22T14:21:36.912+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   3  |  import MyView from '../views/MyView.js';
2023-12-22T14:21:36.912+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at formatError (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:63007:46)
2023-12-22T14:21:36.912+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at TransformContext.error (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:63001:19)
2023-12-22T14:21:36.913+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at normalizeUrl (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:61282:33)
2023-12-22T14:21:36.913+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:61432:47
2023-12-22T14:21:36.914+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async Promise.all (index 0)
2023-12-22T14:21:36.914+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async TransformContext.transform (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:61353:13)
2023-12-22T14:21:36.915+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async Object.transform (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:63302:30)
2023-12-22T14:21:36.916+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async loadAndTransform (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:49045:29)
2023-12-22T14:21:36.916+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       at async viteTransformMiddleware (file:///C:/Users/Tarek%20Oraby/Downloads/fs-routing-main/fs-routing-main/node_modules/vite/dist/node/chunks/dep-YJaePtkC.js:58643:32)
2023-12-22T14:21:36.950+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : 
2023-12-22T14:21:36.952+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :  ERROR(TypeScript)  Cannot find module '../views/aboutAboutView.js' or its corresponding type declarations.
2023-12-22T14:21:36.952+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :  FILE  C:/Users/Tarek Oraby/Downloads/fs-routing-main/fs-routing-main/frontend/generated/views.ts:1:23
2023-12-22T14:21:36.953+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :
2023-12-22T14:21:36.953+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :   > 1 | import AboutView from '../views/about\AboutView.js'
2023-12-22T14:21:36.953+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :       |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-12-22T14:21:36.954+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :     2 | import Hello from '../views/index.js'
2023-12-22T14:21:36.954+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :     3 | import MyView from '../views/MyView.js'
2023-12-22T14:21:36.954+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :     4 |
2023-12-22T14:21:36.955+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   :
2023-12-22T14:21:36.955+02:00  INFO 207388 --- [v-server-output] c.v.b.devserver.DevServerOutputTracker   : [TypeScript] Found 1 error. Watching for file changes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.