IQSS / IQSS/dataverse-client-javascript
Refactor model transformers and test helpers to use payload interfaces instead of 'any'
Personne n'a encore pris cette issue.
- Langage dominant
- TypeScript
- Étoiles
- 20
- Forks
- 11
- Merge moyen
- 2 j 5 h
- PR mergées (30 j)
- 1
Description
Overview of the Feature Request
Refactor model transformers and test helpers to use payload interfaces instead of 'any'
Example
Use a payload model like:
export interface DatasetPreviewPayload {
global_id: string;
name: string;
versionId: number;
majorVersion: number;
minorVersion: number;
versionState: string;
createdAt: string;
updatedAt: string;
published_at?: string;
citation: string;
description: string;
}
export const transformDatasetPreviewsResponseToPreviews = (response: AxiosResponse): DatasetPreview[] => {
const datasetPreviews: DatasetPreview[] = [];
const datasetPreviewsPayload = response.data.data.items;
datasetPreviewsPayload.forEach(function (datasetPreviewPayload: DatasetPreviewPayload) {
datasetPreviews.push(transformDatasetPreviewPayloadToDatasetPreview(datasetPreviewPayload));
});
return datasetPreviews;
};
const transformDatasetPreviewPayloadToDatasetPreview = (
datasetPreviewPayload: DatasetPreviewPayload,
): DatasetPreview => {
return {
persistentId: datasetPreviewPayload.global_id,
title: datasetPreviewPayload.name,
versionId: datasetPreviewPayload.versionId,
versionInfo: {
majorNumber: datasetPreviewPayload.majorVersion,
minorNumber: datasetPreviewPayload.minorVersion,
state: datasetPreviewPayload.versionState as DatasetVersionState,
createTime: new Date(datasetPreviewPayload.createdAt),
lastUpdateTime: new Date(datasetPreviewPayload.updatedAt),
...(datasetPreviewPayload.published_at && { releaseTime: new Date(datasetPreviewPayload.published_at) }),
},
citation: datasetPreviewPayload.citation,
description: datasetPreviewPayload.description,
};
};
Instead of
export const transformDatasetPreviewsResponseToPreviews = (response: AxiosResponse): DatasetPreview[] => {
const datasetPreviews: DatasetPreview[] = [];
const datasetPreviewsPayload = response.data.data.items;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
datasetPreviewsPayload.forEach(function (datasetPreviewPayload: any) {
datasetPreviews.push(transformDatasetPreviewPayloadToDatasetPreview(datasetPreviewPayload));
});
return datasetPreviews;
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const transformDatasetPreviewPayloadToDatasetPreview = (datasetPreviewPayload: any): DatasetPreview => {
return {
persistentId: datasetPreviewPayload.global_id,
title: datasetPreviewPayload.name,
versionId: datasetPreviewPayload.versionId,
versionInfo: {
majorNumber: datasetPreviewPayload.majorVersion,
minorNumber: datasetPreviewPayload.minorVersion,
state: datasetPreviewPayload.versionState as DatasetVersionState,
createTime: new Date(datasetPreviewPayload.createdAt),
lastUpdateTime: new Date(datasetPreviewPayload.updatedAt),
...(datasetPreviewPayload.published_at && { releaseTime: new Date(datasetPreviewPayload.published_at) }),
},
citation: datasetPreviewPayload.citation,
description: datasetPreviewPayload.description,
};
};
What kind of user is the feature intended for?
Developer
What inspired the request?
What existing behavior do you want changed?
None
Any brand new behavior do you want to add to Dataverse?
None
Any open or closed issues related to this feature request?
- https://github.com/IQSS/dataverse-client-javascript/pull/107 (First time we introduce payload models to avoid 'any')
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Aucun fichier ni test n’est nommé. Commencez par localiser les transformateurs de modèles et les helpers de test qui utilisent any, puis comparez l’approche payload-model de la pull request #107. C’est terminé lorsque les valeurs de payload concernées utilisent des interfaces explicites au lieu de any et que les tests existants continuent de passer.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- api
- Type d'issue
- Refactorisation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100