bk-lib-typescript
v2.0.0-d
Published
Progetto di classi comuni da importare nei vari progetti Ionic, nodejs, typescript.
Readme
Progetto di classi comuni da importare nei vari progetti Ionic, nodejs, typescript. Da valutare la struttura del progetto per risolvere i problemi di importazione di cui si parla nel seguito.
Per l'importazione in progetto ionic si possono utilizzare le dipendenze, ma funziona solo localmente. Ancora da vedere come gestirlo a livello di node_modules (con sorgente, sarebbe possibile trasformandolo nella cartella dist). Si vorrebbe però poter vedere e modificare in locale il progetto sorgente in fase di test. Richiesto anche in SO come aggiungere la cartella al webpack ma non si è ottenuta risposta.
Per l'importazione in progetto nodejs non hanno funzionato le dipendenze. Si è utilizzato con successo un import con il percorso relativo, ad esempio:
import { StringUtils } from "../../LIBRARY/LIB - TYPESCRIPT/typescript/lib/classes/utils/string-utils";
- Lanciando l’esecuzione con “node '.\out\NODEJS\CST - BENZI - MAC - B.R.F TRANSFER\main.js'” in locale funziona (perché in out il fatto che ci sia una cartella esterna fa creare delle sottodirectory).
- Testato anche l'avvio automatico del programma con F5 in debug
- Da testare eseguibile: pkg "out/NODEJS/CST - BENZI - MAC - B.R.F TRANSFER/main.js" -o "build/CST - BENZI - MAC - B.R.F TRANSFER.exe"
- Testata con successo anche la creazione e l’avvio del servizio.
Questo sistema ha il problema che l’intellisense non "vede" le classi, si deve conoscere il percorso per fare l’import o in seguito è possibile che dopo qualche utilizzo funzioni.
Lancio pacchetto npm
Lanciamo ufficialmente il pacchetto su npm, chiamandolo bk-lib-typescript; Ho pensato che fosse carino lanciarlo con la 2.0.0
Ho cambiato una serie di cose che impedivano al pacchetto di compilare inzialmente, dovuto piu che alro al fatto che seppur il type del return diceva string, si gestivano gli errori facendo return null, se avessi sostituito il tipo di ritorno con string | null la cosa piu probabile e che sarebbe saltato tutto con "might be null", hopo preferito gestirli con un trycatch ed il throw error.
Ho poi spostato le dipendenze dal root a src, per buona prassi di TS
Una volta riuscito a compilare ho pubblicato il pacchetto su npm semplicemente con npm-publish, ma mancavano gli imports, sono cosi tornato a rivedermi il progetto, ho fatto vari cambiamenti, alla fine ho scoperto per puro caso il punto 2, botta di fondoschiena notevole, ma si sa, la fortuna aiuta gli audaci
Il problema principale era legato a due aspetti:
- Mancava una dipendenza TypeScript fondamentale nel progetto, che causava errori di compilazione e confusione.
- La configurazione del modulo non era impostata su
ESNext, il che impediva al progetto di funzionare correttamente con i moduli moderni.
Modifiche Recenti
Versione 2.0.0a
- Aggiunti nuovi metodi nella classe
DateUtils:isTodayDate: Verifica se una data corrisponde alla data odierna.dateFromTimeSpan: Converte un TimeSpan in una data.dateToTimeSpan: Converte una data in un TimeSpan.roundDate: Arrotonda una data al minuto più vicino in base a uno step specificato.
- Refactoring del metodo
dateFromDatetimeStringper migliorare leggibilità e struttura del codice. - Tradotti i messaggi di errore in italiano per coerenza con il resto del progetto.
- Aggiunto uno script
updatenelpackage.jsonche:- Esegue il linter per correggere eventuali problemi di stile.
- Pubblica il pacchetto su npm.
Versione 2.0.0
- Sostituiti i riferimenti a
UtilsconTypeUtilsnella classeStringUtils. - Rimossi i riferimenti a
FieldeMexUtilsinStringUtils, utilizzando tipi genericiany. - Risolti problemi di nullabilità per
minIndemaxIndnei metodi diStringUtils. - Reintrodotto
Utils.safeParseper la logica di parsing inStringUtils. - Aggiornata la classe
TypeUtilsper garantire la compatibilità con le modifiche più recenti.
Versione 1.2.9
- Creata la classe
ConvertUtilscome utilità per le conversioni. Aggiunto il metodointToBinaryUnsignedper la conversione binaria senza segno.
Versione 1.2.8
- Aggiunto il campo
CustNote1aMEXVIR_OrderList.
Versione 1.2.7
- Migliorato
DateUtils.dateFromDatetimeStringper accettare il formatoyyyy-mm-dd hh:mm:ss.
Versione 1.2.6
- Aggiunto il metodo
asBooleanWithDefaultinTypeUtils. - Aggiunto il metodo
dateFromDatetimeStringinDateUtils.
Versione 1.2.5
- Introdotto il metodo
cloneAsJsoninUtils.
Versione 1.2.4
- Creata la classe
DateUtilscon metodi di utilità spostati daUtils. - Aggiunta la gestione dei separatori nel formato data per
datetime.
Versione 1.2.3
- Aggiunta la funzione di utilità
Utils.wait.
Versione 1.2.2
- Aggiunte funzioni di utilità e campi per le viste degli ordini.
- Creata la classe
ArrayUtilscon metodi comegetOnlyOrNull. - Aggiunta la funzione
safeSubstringcon un limite massimo di caratteri.
Versione 1.2.1
- Ristrutturato il progetto rimuovendo la cartella
classes. - Importate classi ed enumerazioni del database.
Versione 1.1.1
- Versione iniziale del progetto, migrata dal vecchio progetto
LIB - IONIC.
