# Imports

Toutes ces méthodes exposent un constructeur avec la même interface SealdSDK constructeur.

Il y a 2 manières d'utiliser le Seald-SDK dans votre navigateur, selon vos besoin et l'architecture de votre application web.

# Bibliothèque

Ceci importe @seald-io/sdk-web/lib/seald-sdk.js, qui est la version empaquetée pour le web.

Utilisez cette méthode si vous utilisez un bundler comme webpack. Pour cela, referez-vous à la section Empaquetage personnalisé et transpilation.

# Bundle

Copiez le fichier @seald-io/sdk-web/lib/seald-sdk.browser.js dans votre projet et importez-le via une balise <script> tag.

De la même manière, vous pouvez copier les fichiers suivants pour les plugins :

  • @seald-io/sdk-web/lib/seald-sdk-plugin-ssks-password.browser.js
  • @seald-io/sdk-web/lib/seald-sdk-plugin-ssks-2mr.browser.js
  • @seald-io/sdk-web/lib/seald-sdk-plugin-localstorage.browser.js (obsolète)

Par exemple, pour importer le SDK et le plugin SSKS-Password :

Cette version est déjà empaquetée, transpilée et minifiée pour l'utilisation dans un navigateur web. Elle inclut toutes les bibliothèques, dépendances et polyfills nécessaires à son fonctionnement.

Elle expose le constructeur Seald SDK dans la variable globale window.SealdSDK.

Les plugins sont exposés dans les variables globales :

  • window.SealdSDKPluginSSKSPassword
  • window.SealdSDKPluginSSKS2MR
  • window.SealdSDKPluginLocalStorage (obsolète)

# Node.js / Electron

import SealdSDK from '@seald-io/sdk'

const seald = SealdSDK({ appId })

Cela importe la version empaqueté pour les projets Node.js.

Elle peut être utilisée pour un serveur NodeJS, une application de bureau en Electron, des tests unitaires, etc.

Vous aurez besoin d'installer node-fetch séparément :

npm i -S node-fetch

# React-Native

# Installation

Le Seald SDK pour react-native a quatre "peer dependencies" qui doivent être installées séparément :

  • react-native-modpow
  • @react-native-community/async-storage
  • react-native-scrypt
  • react-native-rsa-native

Vous pouvez les installer avec la commande:

npm i -S react-native-modpow @react-native-community/async-storage react-native-scrypt react-native-rsa-native

Ce paquet ainsi que ces quatre dépendances sont liés automatiquement.

# Bundle

La librairie exposée par défaut est une version empaquetée, transpilée et minifiée. Elle est utilisable telle quelle.

De la même manière, vous pouvez importer les fichiers suivants pour les plugins :

# Bibliothèque

Si votre application est elle-même transpilée, vous pouvez importer la librairie source. Cela vous permettra alors d'optimiser la taille de votre application.

Pour cela, referez-vous à la section [Empaquetage personnalisé et transpilation](#empaquetage-personnalise-et-transpilation).

# Empaquetage personnalisé et transpilation

Pour transpiler le SDK, vous aurez besoin d'activer les polyfills des modules internes de NodeJS.

Voici un example de configuration pour le bundler Webpack 5 :

module.exports = {
  // ... ,
  node: {
    global: true
  },
  resolve: {
    fallback: {
      assert: require.resolve('assert/'),
      fs: false,
      path: require.resolve('path-browserify'),
      events: require.resolve('events/'),
      constants: require.resolve('constants-browserify'),
      os: require.resolve('os-browserify/browser'),
      util: require.resolve('util/'),
      stream: require.resolve('stream-browserify'),
      crypto: false
    }
  },
  plugins: [
    new webpack.ProvidePlugin({
      process: 'process/browser',
      Buffer: ['buffer', 'Buffer'],
      setImmediate: ['timers-browserify', 'setImmediate'],
      clearImmediate: ['timers-browserify', 'clearImmediate']
    })
  ]
  // ...
}

Vous pourrez avoir besoin d'installer en devDependencies les paquets assert path-browserify events constants-browserify os-browserify util stream-browserify process buffer timers-browserify.

Pour plus de détails, voir la documentation de webpack (opens new window).