@solfacil/plasma-utils
Version:
- 💚 [Nuxt 3](https://nuxt.com/) - Compatible with Nuxt 3 - 🍞 [BUN](https://bun.sh/) - A fast JavaScript all-in-one toolkit (runtime, bundler, test runner, package manager). - 🔑 [Keycloak](https://www.keycloak.org/) integration. - ⚡️ Vite - Instant HMR.
182 lines (162 loc) • 4.09 kB
Markdown
 - Compatible with Nuxt 3
- 🍞 [BUN](https://bun.sh/) - A fast JavaScript all-in-one toolkit (runtime, bundler, test runner, package manager).
- 🔑 [Keycloak](https://www.keycloak.org/) integration.
- ⚡️ Vite - Instant HMR.
- 📦 Multiples connections for Graphql and Rest APIs.
- 🪜 Change environments on runtime.
- 🛠 Utilities loading, env, storage, etc.
- 🦾 TypeScript, of course.
We recommend using [VS Code](https://code.visualstudio.com/) with [Volar](https://github.com/johnsoncodehk/volar) to get the best experience (You might want to disable [Vetur](https://vuejs.github.io/vetur/) if you have it).
> Plasma requires Node >= 16.17.0
```bash
git clone https://github.com/solfacil/plasma-utils
bun i
bun dev
bun build:lib:ts
npm publish
```
```typescript
import plasma from '@solfacil/plasma-utils';
import App from './App.vue'
const plasmaOptions = {
configuration: {
enableKeycloak: false,
hostProduction: 'https://my-host.com',
hostStaging: 'https://my-host.com'
},
connections: {
graphql: {
default: {
dev: {
url: 'https://rickandmortyapi.com/graphql'
},
prod: {
url: 'https://rickandmortyapi.com/graphql'
},
stg: {
url: 'https://rickandmortyapi.com/graphql'
}
}
},
rest: {
rickmorty: {
dev: {
url: 'https://rickandmortyapi.com/api'
},
prod: {
url: 'https://rickandmortyapi.com/api'
},
stg: {
url: 'https://rickandmortyapi.com/api'
}
}
},
keycloak: {
dev: {
url: 'https://my-keycloak.com',
realm: 'General',
client_id: 'ecommerce'
},
prod: {
url: 'https://my-keycloak.com',
realm: 'General',
client_id: 'ecommerce'
},
stg: {
url: 'https://my-keycloak.com',
realm: 'General',
client_id: 'ecommerce'
}
}
}
};
createApp(App)
.use(plasma, plasmaOptions)
.mount('#app');
```
```typescript
import plasma from '@solfacil/plasma-utils';
export default defineNuxtPlugin(({ vueApp }) => {
const config = useRuntimeConfig().public;
vueApp.use(plasma, {
configuration: {
enableKeycloak: false,
hostProduction: config.HOST_PRODUCTION,
hostStaging: config.HOST_STAGING
},
connections: {
graphql: {
default: {
dev: {
url: 'https://rickandmortyapi.com/graphql'
},
prod: {
url: 'https://rickandmortyapi.com/graphql'
},
stg: {
url: 'https://rickandmortyapi.com/graphql'
}
}
},
rest: {
rickmorty: {
dev: {
url: 'https://rickandmortyapi.com/api'
},
prod: {
url: 'https://rickandmortyapi.com/api'
},
stg: {
url: 'https://rickandmortyapi.com/api'
}
}
},
keycloak: {
dev: {
url: 'https://my-keycloak.com',
realm: 'General',
client_id: 'ecommerce'
},
prod: {
url: 'https://my-keycloak.com',
realm: 'General',
client_id: 'ecommerce'
},
stg: {
url: 'https://my-keycloak.com',
realm: 'General',
client_id: 'ecommerce'
}
}
}
});
});
```