Skip to content

eidellev/adonis-stardust

Repository files navigation

Adonis Stardust

code style: prettier

⭐ Adonis Stardust ⭐

Use your adonis named stardust in the client.

Installation

npm i @eidellev/adonis-stardust

node ace configure @eidellev/adonis-stardust

Setup

Register Middleware

Add the Stardust middleware to start/kernel.ts:

Server.middleware.register([
  () => import('@ioc:Adonis/Core/BodyParser'),
  () => import('@ioc:EidelLev/Stardust/Middleware'),
]);

Register a Named Route

Create a named route in your stardust file:

Route.get('users/:id', () => {
  ...
}).as('users.show');

In Your View

Add the @routes Edge tag to your main layout (before your application's JavaScript).

@routes
@entryPointStyles('app')
@entryPolintScripts('app')

Client-Side Usage

Client Setup

Stardust should be initialized as early as possible, e.g. in your application's entrypoint

import { initRoutes } from '@eidellev/adonis-stardust/client';

initRoutes();

Now you can use the stardust helper to access your adonis routes:

import { stardust } from '@eidellev/adonis-stardust/client';

stardust.route('users.show', { id: 1 }); // => `/users/1`

/**
 * You can also pass path params as an array and they will populated
 * according to their order:
 */
stardust.route('users.show', [1]); // => `/users/1`

You can also pass query parameters like so:

stardust.route('tasks.index', undefined, { qs: { tags: ['work', 'personal'] } });
// `/tasks?tags=work,personal

Checking the Current Route

stardust.current; // => 'tasks.index'
stardust.isCurrent('tasks.index'); // => true