npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

data-management

v0.1.10

Published

Permet la création de services configurables afin d'automatiser la création de service de manière plus rapide.

Downloads

30

Readme

DataManagement

Permet la création de services configurables afin d'automatiser la création de service de manière plus rapide.

Importer la librairie

Pour importer la librairie il suffit d'exécuter dans le fichier src de votre projet npm i data-management

Utiliser la librairie

Etape 1 : Configurer la librairie

Tout d'abord il faut ajouter du code à votre app.module.ts

imports : [
	DataManagementModule.forRoot({
	    Stock: {
	        urlConfig: new Map(
	          Object.entries({
	            getOne: '${baseUrl}/${T}/${id}',
	            getList: '${baseUrl}',
	            post: '${baseUrl}bundle',
	            put: '${baseUrl}bundle',
	            delete: '${baseUrl}bundle/${id}',
	          })
	        ),
	        baseUrl: environment.stockUrlTest,
	      },
	})
]

Dans le forRoot on va placer un objet qui est une liste des différents objets d'une api qu'on va utiliser. Ici on en utilisera une seule qui gère l'objet Stock. Si on avait voulu gérer un second objet Produit le code ressemblerait à

DataManagementModule.forRoot({
    Stock: {
        urlConfig: new Map(
          Object.entries({
            getOne: '${baseUrl}/${T}/${id}',
            getList: '${baseUrl}',
            post: '${baseUrl}bundle',
            put: '${baseUrl}bundle',
            delete: '${baseUrl}bundle/${id}',
          })
        ),
        baseUrl: environment.stockUrlTest,
    },
    Produit: {...}
}),

L'url config permet de définir des urls spécifiques si la convention par défaut ci-dessous ne correspond pas à l'api que vous utilisez. Actuellement il faut définir chaque type (getOne, getList, etc) utilisée, même si l'une d'elle correspond à la valeur par défaut. Quelques détails :

-${baseUrl} est l'url définie dans la configuration Stock: {..., baseUrl: "http://localhost:8080/", } - ${T} est le nom de l'objet, dans l'exemple précédent ${T} sera remplacé par Stock lors de l'appel à l'api - ${id} correspond au paramètre id de l'objet. Le nom id peut être replacé en renseignant le paramètre keyOfComparison dans la configuration. Par exemple si l'id de mon Stock ne se nomme pas id mais idOfStock je rajoute le paramètre keyOfComparison dans ma config

Stock: {..., 
	baseUrl: "http://localhost:8080/",
	keyOfComparison: "idOfStock"
	}

Etape 2 : Injecter le service

Une fois la configuration en place on ajoute une injection dans le constructor du component où on veut appeler l'api ou accéder aux données.

constructor(
	@Inject(DataRegisterService) private dataRegisterService: DataRegisterService
) { }

Cette instruction permet d'accéder à tous les objets qu'on a préalablement définit dans la config.

Etape 3 : Utiliser le service voulu

getAllDatas() {
	this.dataRegisterService.get('Stock').getList().subscribe((value) => {
		//Faire ici ce qu'on veut avec la valeur 
	})
}

Par défaut si des données sont stockées les méthodes getList() et getOne() retourneront celle stockée en localStorage. Si vous voulez forcer la requête, il suffit de mettre le paramètre force à true dans options comme ci-dessous.

getAllDatas() {
	this.dataRegisterService.get('Stock').getList(undefined, {force: true}).subscribe((value) => {
		//Faire ici ce qu'on veut avec la valeur 
	})
}

Si vous voulez requêter les valeurs déjà chargées vous pouvez utiliser la fonction getDatas().

const datas: T[] = this.dataRegisterService.get('Stock').getDatas();

Convention par défaut

Cette convention est celle utilisée par défaut si vous ne fournissez pas d'url à la méthode appelée et que vous avez fourni une baseUrl.

getOne objet T => GET {baseUrl}/T/{id} getList objet T => GET {baseUrl}/T post object T => POST {baseUrl}/T put object T => PUT {baseUrl}/T delete object T => DELETE {baseUrl}/T/{id}

Lorsque vous utilisez une url spécifique pour une méthode, celle-ci est sauvegardé de telle sorte que si vous réutilisez la même méthode de nouveau, l'url par défaut configurée est celle que vous avez utilisé la seconde fois. Par exemple: -> J'utilise getList en passant l'url https://monserveur.com/api/1 dans les paramètres de la méthode -> J'utilise une seconde fois getList, je n'ai plus besoin de passer l'url en paramètre

Autre cas: -> J'utilise getList en passant l'url https://monserveur.com/api/1 dans les paramètres de la méthode -> Je sélectionne l'option refreshAfterDelete et appelle la méthode delete, l'url utilisée pour le refresh sera https://monserveur.com/api/1

Paramètres

notLazy par défaut à False permet de ne pas requêter si la donnée existe déjà. A true on requête en toute circonstance. TODO faire un tableau avec toutes les configs

This library was generated with Angular CLI version 10.1.6.

Code scaffolding

Run ng generate component component-name --project dataManagement to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module --project dataManagement.

Note: Don't forget to add --project dataManagement or else it will be added to the default project in your angular.json file.

Build

Run ng build dataManagement to build the project. The build artifacts will be stored in the dist/ directory.

Publishing

After building your library with ng build dataManagement, go to the dist folder cd dist/data-management and run npm publish.

Running unit tests

Run ng test dataManagement to execute the unit tests via Karma.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.

Evolutions à venir

-> Si un type n'est pas renseigné dans l'urlConfig on prend celle par défaut. On ne fait plus de remplacement complet du map mais un remplacement membre par membre