open-index/open-npm huggingface dataset:
npm package: @oengus/ng-wizi-bulma
Description: Angular Components using Bulma.io css
Latest version: 20.0.0

# NG Wizi Bulma

[![npm](https://img.shields.io/npm/v/@oengus/ng-wizi-bulma.svg)](https://www.npmjs.com/package/@oengus/ng-wizi-bulma)
[![npm](https://img.shields.io/npm/dm/@oengus/ng-wizi-bulma.svg)](https://www.npmjs.com/package/@oengus/ng-wizi-bulma)

[Bulma](http://bulma.io/) components for Angular 15+

The library uses [ng-packagr](https://github.com/dherges/ng-packagr) to transpile into the Angular Package Format

## Demo

Try out the [demo](https://ng-wizi-bulma.firebaseapp.com/)

## Install

Run:

```sh
npm i -S @oengus/ng-wizi-bulma bulma bulma-extensions @angular/cdk
```

Import bulma (and needed extensions) scss into your main scss file:

```scss
@import 'node_modules/bulma/bulma.sass';
@import 'node_modules/bulma-extensions/bulma-switch/src/sass/index';
@import 'node_modules/bulma-extensions/bulma-tooltip/src/sass/index';
@import 'node_modules/bulma-extensions/bulma-calendar/src/sass/index';
```

After Bulma, import ng-wizi-bulma scss into your main scss file allowing you to custom all variable from bulma:

```scss
@import 'node_modules/@oengus/ng-wizi-bulma/ng-wizi-bulma';
```

Load the Fontawesome icon font in your index.html.

```html
 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" crossorigin="anonymous">
```

Import the required modules `BrowserAnimationsModule` and `FormsModule` into your app module, then
import either all Nwb modules with `NwbAllModule` or only the module you want to use in your application for example `NwbDialogModule

```ts
import {ApplicationRef, NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {HttpModule} from '@angular/http';
import {FormsModule} from '@angular/forms';

import {NwbAllModule} from '@oengus/ng-wizi-bulma';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    BrowserAnimationsModule,
    NwbAllModule,
  ],
  declarations: [],
  providers: [],
  entryComponents: [],
})
export class AppModule {

}
```

## How to use it

If you want to see how components work, just see the demo file : `src/demo-app/demo-app/demo-app.ts`

## How to upgrade?
`ng update @angular/core @angular/cli @angular/cdk @angular-devkit/build-angular @angular-eslint/schematic`
npm package: @oeph/danger-plugin-eslint
Description: Eslint your code with Danger
Author: Philipp Oehme
Latest version: 1.2.1

# danger-plugin-eslint

[![npm version](https://badge.fury.io/js/%40oeph%2Fdanger-plugin-eslint.svg)](https://badge.fury.io/js/%40oeph%2Fdanger-plugin-eslint)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

> Eslint your code with Danger

_**This fork includes support for Bitbucket Server**_

## Usage

Install:

```sh
yarn add @oeph/danger-plugin-eslint --dev
```

At a glance:

```js
// dangerfile.js
import eslint from '@oeph/danger-plugin-eslint'

eslint()
```
## Changelog

See the GitHub [release history](https://github.com/oeph/danger-plugin-eslint/releases).

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md).
npm package: @oeph/danger-plugin-jest
Description: Danger plugin for Jest
Author: Philipp Oehme
Latest version: 0.1.2

# danger-plugin-jest

> [Danger](https://github.com/danger/danger-js) plugin for Jest

## Usage

### Setup Jest

This Danger plugin relies on modifying your Jest configuration slightly on CI to also output a JSON file of the results.

You need to make the `yarn jest` command include: `--outputFile test-results.json --json`. This will run your tests
like normal, but will also create a file with the full test results after.

> You may also want to add the JSON output file to your `.gitignore`, since it doesn't need to be checked into source control.

### Setup Danger

Install this Danger plugin:

```sh
yarn add danger-plugin-jest --dev
```

By default, this package will assume you've set the filename as `test-results.json`, but you can use any path.

```js
// dangerfile.js
import path from 'path'
import jest from 'danger-plugin-jest'

// Default
jest()
// Custom path
jest({ testResultsJsonPath: path.resolve(__dirname, 'tests/results.json') })
```

See [`src/index.ts`](https://github.com/macklinu/danger-plugin-jest/blob/master/src/index.ts) for more details.

## Changelog

See the GitHub [release history](https://github.com/macklinu/danger-plugin-jest/releases).

## Development

Install [Yarn](https://yarnpkg.com/en/), and install the dependencies - `yarn install`.

Run the [Jest](https://facebook.github.io/jest/) test suite with `yarn test`.

This project uses [semantic-release](https://github.com/semantic-release/semantic-release) for automated NPM package publishing.

:heart:

## Notice

This is a fork of https://github.com/macklinu/danger-plugin-jest
npm package: @oesp/core
Description: OESP core SDK (agnostique)
Latest version: 8.0.0

# @oesp/core

Le cœur du SDK OESP (Open Entrust & Sync Protocol). Ce package est agnostique de la plateforme et contient la logique fondamentale de pack, unpack et verify.

## Installation

```bash
npm install @oesp/core
```

## Utilisation

```ts
import { OESPClient } from '@oesp/core';

// Nécessite un CryptoProvider, un KeyStore et un ReplayStore
const client = new OESPClient({ crypto, keystore, replay });
```
npm package: @oesp/crypto-sodium
Description: CryptoProvider via libsodium-wrappers (Node+Browser)
Latest version: 8.0.0

# @oesp/crypto-sodium

Implémentation de `CryptoProvider` pour OESP utilisant `libsodium-wrappers`. Compatible avec Node.js et les navigateurs.

## Installation

```bash
npm install @oesp/crypto-sodium
```

## Utilisation

```ts
import { createSodiumCryptoProvider } from '@oesp/crypto-sodium';

const crypto = await createSodiumCryptoProvider();
// Utilisez 'crypto' lors de l'initialisation d'OESPClient
```
npm package: @oesp/keystore-node
Description: KeyStore Node (fichier JSON)
Latest version: 8.0.0

# @oesp/keystore-node

Implémentation de `KeyStore` pour OESP stockant l'identité dans un fichier JSON local. Conçu pour les environnements Node.js.

## Installation

```bash
npm install @oesp/keystore-node
```

## Utilisation

```ts
import { NodeFileKeyStore } from '@oesp/keystore-node';

const keystore = new NodeFileKeyStore('./identity.json');
// L'identité sera créée automatiquement si le fichier n'existe pas
```
npm package: @oesp/storage-memory
Description: ReplayStore mémoire
Latest version: 8.0.0

# @oesp/storage-memory

Implémentation de `ReplayStore` en mémoire pour OESP. Utile pour les tests ou les sessions éphémères.

## Installation

```bash
npm install @oesp/storage-memory
```

## Utilisation

```ts
import { MemoryReplayStore } from '@oesp/storage-memory';

const replay = new MemoryReplayStore();
```
npm package: @oesp/sync-http
Description: OESP HTTP Sync Client
Latest version: 8.0.0

# @oesp/sync-http

Client de synchronisation HTTP pour OESP avec support des uploads fragmentés et vérification d'intégrité.

## Installation

```bash
npm install @oesp/sync-http
```

## Fonctionnalités

- **Upload par Session** : Création de session pour gérer les gros volumes de données.
- **Envoi Fragmenté (Chunked)** : Découpage automatique des données pour éviter les timeouts et respecter les limites du serveur.
- **Vérification d'Intégrité** : Calcul du hash SHA-256 pour chaque fragment envoyé.
- **Opérations Asynchrones** : Gestion non-bloquante des requêtes réseau via `fetch`.
- **Crypto Agnostique** : Injection du provider SHA-256.

## Utilisation

```ts
import { OESPSyncClient } from '@oesp/sync-http';
import { sha256 } from 'js-sha256'; // Exemple de lib externe

// 1. Initialiser le client avec l'URL du serveur et le provider SHA-256
const client = new OESPSyncClient({
  baseUrl: 'https://mon-serveur-oesp.com',
  sha256: async (data) => new Uint8Array(sha256.arrayBuffer(data))
});

// 2. Préparer les tokens à synchroniser (format string base64url ou raw)
const tokensToSync = [
  'OESP1.token1...',
  'OESP1.token2...'
];

const deviceDid = 'oesp:did:my_device';

try {
  // 3. Lancer la synchronisation asynchrone
  // La méthode gère automatiquement la création de session, le découpage et l'upload
  const result = await client.syncTokens(
    tokensToSync,
    deviceDid
  );

  if (result.success) {
    console.log(`Synchronisation réussie !`);
    console.log(`Tokens envoyés : ${result.uploadedCount}`);
    console.log(`ID de session : ${result.sessionId}`);
  } else {
    console.error(`Erreur de synchro : ${result.error}`);
  }
} catch (err) {
  console.error("Erreur réseau ou client:", err);
}
```

## Configuration Avancée

Vous pouvez ajuster la taille des chunks lors de l'initialisation :

```ts
const client = new OESPSyncClient({
  baseUrl: 'https://api.oesp.com',
  sha256: mySha256Provider,
  chunkSize: 1024 * 1024 // 1MB par chunk (défaut: 512KB)
});
```
npm package: @oesp/transport-ble-gatt
Description: OESP BLE GATT Transport (P2P offline)
Latest version: 8.0.0

# @oesp/transport-ble-gatt

Transport OESP via BLE GATT (Central <-> Peripheral) avec support asynchrone et fragmentation.

## Installation

```bash
npm install @oesp/transport-ble-gatt
```

## Fonctionnalités

- **Communication P2P Offline** : Échange de données sans internet.
- **Fragmentation Automatique** : Gestion transparente du MTU BLE.
- **Protocole Stop-and-Wait** : Fiabilité accrue via acquittements (ACK).
- **Opérations Asynchrones** : Utilisation de `Promise` pour toutes les opérations I/O.
- **Crypto Agnostique** : Injection de la fonction de hachage SHA-256 pour compatibilité multi-plateforme (Node.js, React Native, Browser).

## Utilisation (Central)

Le mode Central est généralement utilisé par l'application mobile qui scanne et se connecte au périphérique.

```ts
import { OESPBleGattTransport } from '@oesp/transport-ble-gatt';
import { MyBleLink } from './MyBleLink'; // Votre implémentation de BleGattLink
import { sha256 } from 'js-sha256'; // Ou autre provider

// 1. Initialiser le transport avec le provider SHA-256
const transport = new OESPBleGattTransport({
  sha256: async (data) => new Uint8Array(sha256.arrayBuffer(data))
});

const link = new MyBleLink();

try {
  // 2. Connexion (géré par votre implémentation Link)
  await link.connect('DEVICE_UUID');

  // 3. Envoi d'un token OESP de manière asynchrone
  // La méthode gère la fragmentation et les ACK automatiquement
  await transport.sendToken(oespTokenBytes, link);
  console.log("Token envoyé avec succès !");

} catch (err) {
  console.error("Erreur de transport:", err);
}
```

## Utilisation (Peripheral)

Le mode Peripheral est utilisé par l'appareil IoT ou le receveur.

```ts
const transport = new OESPBleGattTransport({
  sha256: async (data) => new Uint8Array(sha256.arrayBuffer(data))
});
const link = new MyBleLink(); // Implémentation côté périphérique

// Boucle de réception asynchrone
transport.receiveLoop(link, async (token) => {
  console.log("Token OESP complet reçu:", token);
  // Traitement du token...
});
```

## Interface `BleGattLink`

Vous devez fournir une implémentation de l'interface `BleGattLink` adaptée à votre environnement (ex: `react-native-ble-plx` ou `noble`).

```ts
interface BleGattLink {
  // MTU négocié (doit être > 23 pour de meilleures performances)
  mtu: number;
  
  // Écrit des données sur la caractéristique RX du pair
  write(data: Uint8Array): Promise<void>;
  
  // Lit des données depuis la caractéristique TX du pair
  read(): Promise<Uint8Array>;
  
  // Ferme la connexion
  close(): Promise<void>;
}
```

## Notes Techniques

- **MTU & Fragmentation** : Le transport découpe les messages OESP (souvent > MTU) en trames. Assurez-vous que `link.mtu` reflète le MTU réel négocié.
- **Timeout** : Un timeout est appliqué si un ACK n'est pas reçu à temps.
- **Android** : Nécessite les permissions `BLUETOOTH_SCAN` et `BLUETOOTH_CONNECT`.