-
-
Notifications
You must be signed in to change notification settings - Fork 5
Planning version 5 #62
Comments
|
Typescript or flow types support |
Hey @thetutlage poking in here to discuss jsonapi.org serializer support. Especially with the introduction of operations, the structure of Lucid serializers is not a fit for compliant serialization. Some things that would be needed for compliance is to properly be aware of From experience implementing, teaching, and working on OSS that uses jsonapi.org spec, my recommendation is to have a serializer with a Some good implementations are:
My preference is somewhere between JA Serializer and JSON API DotNET Core. Some other things to really think about and work with, a built in integration layer for jsonapi should also help with error serialization and should be aware of The good thing is that this work could also be applied for other specs like JSON Schema and even GraphQL |
It will be nice to have some kind of release plan for new versions of AdonisJs. That way we know when to expect new versions. |
Add support for task scheduling. |
Please add support for MongoDB |
Please make MongoDB as built-in support |
As @ammezie said. I think a build in way to do task scheduling would be worth having. Due to the way the server process runs, Nodejs is perfect for this and it would make the setup of the schedule runner much simpler than in analog frameworks. Perhaps you can simply include modules that already exists (or very similar code) to the core. For example: |
Queue jobs 👍 |
@Zizaco @ammezie Sure I will look into the Scheduled tasks as well. Adding it to the list. Regarding MongoDB and GraphQL Regarding MongoDB @wxs77577, you already maintain a module for same. I am happy to share any insights you looking for. But adding that to the core and maintaining it is not possible, since I have almost zero experience with MongoDB. |
RBAC |
hello; Great features. Is it possible to have a release plan; each 6 months so we can make commitments on our products as well :) thanks for the fantastic job on adonisjs. |
Some basis for authorization (much like laravel's one) would be cool |
You can already do that with Concerning V5, I want also to... (not in order)
|
For queues, it should be something AMQP-compatible. Or even more ideally, the protocol should be pluggable (kind of like database is now). One reason I prefer RabbitMQ over Redis, is that RMQ has support for dead letter queue (SQS supports that too). That makes it easier to write fault-tolerant apps. I can simply With Redis though, the task needs to be manually re-inserted (error prone). |
@Zizaco in addition to what @RomainLanz suggested, you should check out enniel/adonis-acl |
Support for better logging swapping. E.g. I prefer to use Bunyan. |
Hi guys, add sftp filesystem for remote storage. |
I know that this request will break everything but hey, its a new major version 5, so people will expect it to break anyway, so it's good to start new projects: Standard es5/6 import modules, instead of "use" |
@taviroquai depending on the release date plan for 5, this would conflict with latest Node LTS and adoption across companies relying on LTS. I think after Node LTS supports import/export statements then it could be more feasible. The other way around this would be to require a precompile step which is doable (and can actually lead to some pretty interesting performance improvements) but would be a pretty large departure from what's currently available. |
It would be great to have an native (and optional) assets compiler, lixe Laravel Mix. Also route groups inside another groups would be realy nice in some situations, example: Route.group(() => {
Route.group(() => {
Route.get('/login', 'SessionController.login')
Route.post('/login', 'SessionController.submitLogin')
Route.get('/register', 'SessionController.register')
Route.post('/register', 'SessionController.submitRegister')
}).middleware('redirect-if-authenticated')
Route.get('/logout', 'SessionController.logout')
.middleware('auth')
}).prefix('/session') |
I think i would be great to have ability to configure folder structure, like for views, exceptions folder etc. It would make possible use more modular structure and divide app by logical modules. |
Mixing the ideas of @lffg and @PazzaVlad, Engines support could be nice so that you can build sub projects and mount the entire project to the router and have a sharing mechanism to map things within sub DIs. So in an Engine you might have a This is heavily inspired by rails and Ember engines |
Would be great if the With no compatibility between Express middleware (mainly due to differences in the |
I wonder if validator messages will looking for translation (if available) by default. For example, if we have The translation file would be located in // resources/locales/<locale>/validations.json
{
"unique": "The {field} should be unique",
"required": "The {field} is required",
"range": "The {field} should between {0} and {1}"
} I've done this by creating simple helper that dump all validation keys from Helpers.validationMessages = () => {
const formats = {}
const rules = require('indicative/builds/validations')
for (let rule of Object.keys(rules)) {
rule = rule.split(/(?=[A-Z])/).join('_').toLowerCase()
formats[rule] = (field, type, args) => {
const params = { field, ...args }
try {
return Antl.formatMessage(`validations.${type}`, params)
} catch (err) {
Logger.debug('Validation translation not found', { err })
}
}
}
return formats
} That way I could simply use I thought it would be great if adonis could handle this kind of functionality by default. P.s. Hope you guys get the idea even tho my english was so poor 😁 |
Totally agree with that. I don't see why we even need these special wrapper objects, when an original object can be extended with all of the same features. |
Implement front-matter for email templates. I think it'd be better if we could define the subject line, and even |
I don't think that was good (for me personaly). What I'm currently implement is add job.dispatch('mailer', { type: 'user-activation', recipient: userInstance, data )} Inside the async handle ({ type, recipient, data }) {
data.recipient = recipient
const view = `emails.${type}`
const subject = Antl.formatMessage(view, { extraValueIfAny })
await Mail.send(view, data, (mail) => {
mail.to(recipient.email, recipient.username)
.from(app.mailer.address, app.mailer.name)
.subject(subject)
})
} And here the @layout('layouts.emails')
@section('content')
<tr>
<td align="left" valign="top">
<p>Hello {{ recipient.username }},</p>
<p>Welcome bla bla bla:</p>
</td>
</tr>
<tr>
<td align="center" height="10" style="font-size:10px; line-height:10px;">
@!component('components.emails-button', ....)
</td>
</tr>
@endsection Because .
And also I don't like that I have to add another dependency just for sending a simple email. Just personal preference |
@moltar How come you can define the @feryardiant I don't think adding a dependency is really a big deal. That what Node eco-system is all about. |
Ship Adonis with assets support for SCSS & JS like Laravel Mix to avoid hassle with webpack or Parcel. |
Method fields would also be nice instead of form spoofing.
|
why just don't use laravel mix? |
Requires additional setup, I just would like to install Adonis and code away 😄 |
Unique schedular when running in cluster mode with pm2 or kubernetes. A database based scheduler like "quartz" will be more handy. |
For typescript/flow/static typing discussion, I've gone ahead and opened #65, happy to move it back if we want to but I think it makes sense to have its own issue. |
Do you still plan on using typescript? |
@kieranz As far as I know, They already started working on it, and yes, the core is being rewritten in typescript. |
@kieranz As @hadihallak said, we are currently rewriting the core in TS and fixing bugs + adding features in the same time. |
https://forum.adonisjs.com/t/bug-with-adonis-make-command/653/2 |
If Adonisjs 5 is re-wrote in TS, then I assume we can use TypeORM too instead of Lucid? |
@shimjudavid I think the idea is that Lucid would/is being rewritten as well since it’s fairly core to the Adonis experience and because there needs to be a smooth compatibility and upgrade story for existing users. Though having better TS support would likely mean that using other TS libraries does become easier and using TS in your project may be the default for new projects. |
If we use TypeORM as a default ORM for AdonisJs 5 then Adonis team no longer need to maintain their Lucid ORM, rather they can focus more on new framework features. BTW, TypeORM is very stable ORM and no point in re-invent the wheels by rewriting Lucid. |
@shimjudavid Lucid is a big part of the reason to choose Adonis, really. Using a different orm would be like using Doctrine in Laravel instead of Eloquent. Sometimes the outcome is worth designing your own wheel. ;) |
+1 for passwordless auth. |
+1 for First class support for graphQL |
Really, just make it more “laravel-esque than it is already :) |
Hi |
Hey @crivera! 👋 No timeline yet but @thetutlage and I are working on it every day 👍 |
Unlike relational tables which store data, views store predefined queries that return a result set. Views have several advantages, the one I appreciate more is that they improve database security and integrity given the fact we can use them to display only the columns we want to particular users, for example. Until now, migrations deal only with tables. I think we should add the possibility to create views also. |
The main blocker, as I see it, to this is that knex doesn't have any native support for views, other than via raw queries -- and there's nothing currently preventing one from using those same raw queries in migration files. |
I think it would be better to use Faker.js instead of Chance.js because:
|
Add audit trail (log) for Lucid (insert, update and delete) |
I think more core members should join the developers team. You are only 2 for the moment (or 3 since recently, from what I read somewhere) |
Focus on REST & Security. |
This discussion is open for the public to share their ideas on features they want to see in AdonisJs with version 5.
Please note:
thumbs up
and please do not comment with+1
.Big features
Enhancements
unique
rule to be more versatile, by applying runtime database constraints.eslint
overstandard
.vow-browser
to the latest version of the puppeteer. Puppeteer has evolved a lot in last few months, so there will be the bunch of breaking changes. We just need to fix them and keep the API compatible.Good to have
docblocks
in the code and also make use of YuiDoc or similar tools to generate API docs for all the official repos.Mail
,Session
,Drive
.import
syntax overuse
method to resolve dependencies from IoC container. This highly depends upon the progress done in the core of Node.js. Also, since ES6 modules in Node.js supports.mjs
extensions, will have to think about that too.Breaking changes
Performance Wins
Arrays
withSets
, were are later use_.unique
to pull unique items. This results in some serious performance gains.The text was updated successfully, but these errors were encountered: