Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eidellev/adonis-stardust


https://github.com/eidellev/adonis-stardust

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# Adonis Stardust

![](https://img.shields.io/npm/types/typescript?style=for-the-badge)




code style: prettier




# ⭐ Adonis Stardust ⭐

Use your adonis named stardust in the client.

## Installation

```shell
npm i @eidellev/adonis-stardust

node ace configure @eidellev/adonis-stardust
```

## Setup

### Register Middleware

Add the Stardust middleware to `start/kernel.ts`:

```typescript
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:

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

### In Your View

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

```blade
@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

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

initRoutes();
```

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

```typescript
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:

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

### Checking the Current Route

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