JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q21235F
  • License ISC

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (trackle-library-nodejs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Setup

    Prerequisiti

    Pacchetti

    Per poter utilizzare questo progetto sono necessari alcuni strumenti all'utilizzo della libreria node-addon-api.

    Di seguito vengono riportati le principali dipendenze:

    • NodeJS
    • node-gyp
    • gcc
    • python

    NB: Fare comunque riferimento alla pagina della libreria: node-addon-api

    Aggiungere all'includePath anche la cartella di node per avere a disposizione la libreria <node_api.h> dipendenza della <napi.h> della libreria node-addon-api!

    Libreria

    Per poter compilare la libreria saranno necessari alcuni strumenti come:

    • gcc
    • g++
    • make

    Dopodichè sarà necessario posizionare la libreria di trackle di cui si vuole wrappare il contenuto nel percorso ./lib/src/<libFolder>

    # Ad esempio
     ./lib/src/trackle-library-cpp-4/

    NB: A questo punto è OBBLIGATORIO impostare la variabile d'ambiente TRACKLE_LIB_FOLDER_NAME, dove va inserito il nome della cartella che contiene la libreria del passo precedente.
    Ad esempio nel mio caso

    export TRACKLE_LIB_FOLDER_NAME=trackle-library-cpp-4

    IncludePath

    Aggiungere all'includePath di compilazione del proprio ide tutte le cartelle che si vogliono utilizzare per le varie compilazioni, ad esempio io ho messo queste:

    - /home/scimam/.nvm/versions/node/v18.13.0/include/node = Nodejs
    - ${workspaceFolder}/** = includo tutte le sottocarelle del mio workspace
    - ${workspaceFolder}/node_modules/node-addon-api = cartella di node-addon-api per l'utilizzo della libreria <napi.h>
    - ${workspaceFolder}/lib/src/trackle-library-cpp-4/include = cartella con gli include necessari per la build della libreria trackle
    

    Utilizzo

    Build Libreria

    Per prima cosa bisogna compilare la libreria e prima di farlo, modificare il file ./build-trackle-lib.sh ed inserire correttamente le variabili nella sezione #Set variables.

    Dopodichè lanciare il comando

    npm run build:lib

    A questo punto se tutto è andato correttamente l'artifact potremo trovarlo in /dist/app/lib/trackle_library.so.

    Build Wrapper

    Il codice del wrapper si trova in ./lib/src/wrapper/ e contiene un proxy per l'interfacciamento delle funzionalità tra nodejs e c++.
    Per la sua compilazione sarà necessario lanciare il comando:

    npm run build:wrapper

    così facendo verrà generato un file trackleWrapper.node che finirà nella cartella di destinazione standard ./dist/lib.

    NB: cartelle di <source> e di <destination> sono modificabili nel file ./binding.gyp.

    Progetto Node

    Ora si è liberi di crearsi il proprio progetto node semplicemente importando il proxy (e/o gli enum che possono servire), dopodichè sarà sufficiente passare all'oggetto TrackleAuth il nome del device con la relativa cartella in cui è contenuto il file ".der" della chiave privata associata a quel device.

    Di seguito un codice di esempio:

    import trackle, { Log_Level, ... } from "./proxy/trackleWrapper";
    import TrackleAuth from "./entities/trackleAuth";
    
    const CERTIFICATE_DIR_PATH = "/home/scimam/Downloads/";
    const auth = new TrackleAuth("10af10750a1783413cbcbddd", CERTIFICATE_DIR_PATH);
    
    // Inizio set metodi wrappati
    trackle.setDeviceId(auth.getDeviceId(trackle.getMaxDeviceIdLength()));
    trackle.setKeys(auth.getDeviceKey(trackle.getMaxDevicePrivateKeyLength()));
    ...

    Nel caso si voglia utilizzare la connessione udp di default in c++ della libreria, basterà dichiarare i metodi che gestiscono la connessione senza parametri:

    trackle.setConnectCallback();
    trackle.setDisconnectCallback();
    trackle.setSendCallback();
    trackle.setReceiveCallback();

    Build completo

    E' possibile anche lanciare in un unico comando la compilazione di tutto per creare una dist in automatico.

    npm run build:all

    il quale racchiude:

    npm run build:lib
    npm run build:wrapper
    npm run build:ts

    Esempio

    Per lanciare il programma di esempio bisogna per prima cosa buildare l'intero progetto (lib, wrapper, ts), modificare il path e il nome del deviceId di cui si vuole fare un test in ${workspaceFolder}/src/test/example/example.test.ts:

    const relativeKeyDirPath = "relative/path/to/key";
    const DEVICEID = "deviceIdCorretto";

    e lanciare

    npm run example