# ahfc-client

> Client for interacting with the Arrowhead Framework mandatory core services.

Latest version **0.2.5** (published 2017-10-31) · MIT license · 0 weekly downloads

## Install

```sh
npm install ahfc-client
pnpm add ahfc-client
yarn add ahfc-client
bun add ahfc-client
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.5 |
| Published | 2017-10-31 |
| First published | 2017-09-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=6.11 |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Emanuel Palm |
| Maintainers | emanuelpalm |

## Links

- npm: https://www.npmjs.com/package/ahfc-client
- Repository: https://github.com/ArrowheadFramework/ahfc-node-client
- Homepage: https://github.com/ArrowheadFramework/ahfc-node-client#readme
- Issues: https://github.com/ArrowheadFramework/ahfc-node-client/issues
- npm.io page: https://npm.io/package/ahfc-client

## Recent versions

- 0.2.5 (latest) — 2017-10-31
- 0.2.4 — 2017-10-31
- 0.2.3 — 2017-09-29
- 0.2.2 — 2017-09-29

## README

# Arrowhead Core Client Library for Node.js

[Arrowhead][arrow] core client for [node.js][nodej]. This package contains
code for interacting with the _Arrowhead Mandatory Core Services_, which are
the _ServiceRegistry_, _AuthorisationSystem_ and the _OrchestrationSystem_.
More information about the mentioned services may be read in the
[Arrowhead Wiki][arwik].

_This repository contains a Work-In-Progress (WIP) implementation. Everything_
_is subject to change, and no guarantees about what particular features are_
_available are given._

## About Arrowhead

Arrowhead is a service-oriented automation framework, envisioned to enable the
creation of highly dynamic, scalable and resilient industrial automation
systems. It is centered around the idea of so-called
[Local Automation Clouds][clwik], which could be thought of as secured
intranets with real-time operation support. For more information, please refer
to the [Arrowhead Wiki][arwik].

## Using this Package

This package is available via the [Node Package Manager][npmjs] and is
published as [ahfc-client][npmac]. Instructions on how to get started with the
package may be read [here][npmst].

## Contributing

Contributions are considered from all sources, in all forms, and are required
to adhere to the below guidelines to be accepted.

- All code that can reasonably be written in TypeScript, must be written in
  TypeScript.
- New code must adhere to the style of the existing code.
- No other functionality other than such that contributes to the
  implementations of the _ServiceRegistry_, _AuthorisationSystem_ or
  _OrchestrationSystem_ service interfaces will be accepted.
- The only dependency of this package is the latest Long Term Support (LTS)
  release of the node platform itself. No other packages may be used, unless
  maintained by the same developers as are maintaining this package.
- Unit tests must be provided along new contributions if the contribution in
  question is either (1) a non-trivial bugfix, (2) understood to be difficult
  to get right, or (3) contains security-critical functionality.
- Integration tests are not to be part of this repository.
- The package is not to contain any implementations of cryptographic
  primitives, such as secure hash functions, etc.

### Rationale

#### No Third Party Dependencies

Having dependencies invariably leads to a loss of control, to some extent.
Version conflicts, security issues, other bugs, and the disk space required to
use this package can end up being out of reach of its developers. Avoiding
third party dependencies to the furthest extent possible is therefore a primary
objective.

#### Limited Unit Testing

Apart from ensuring behaviour correctness, unit tests lead to making code
changes more difficult, as either new units must be written, or existing units
be changed whenever code is added or modified. By focusing on bugfixes, other
difficult regions of code, and security-critical functionality, unit tests are
employed where needed the most, and the cost of maintaining them is kept at a
reasonable low.

#### No Integration Tests

Integration tests are often not distinguished from regular unit tests. The
former kind ensures that an implementation is true to its public interface
specification, while the latter verifies that the internals of an
implementation behave as expected. Integration tests may with advantage be put
into separate projects, each making up a Technology Compatibility Kit (TCK),
which may be used to test not just a single project, but any other such that
aim to be compatible with it.

#### No Cryptographic Primitives

Cryptography is hard to get right. The cryptographic primitives provided via
node.js through OpenSSL ought to be enough for any secure functionality
implemented in this package.

[arrow]: http://www.arrowhead.eu/
[arwik]: https://forge.soa4d.org/plugins/mediawiki/wiki/arrowhead-f/index.php/Main_Page
[clwik]: https://forge.soa4d.org/plugins/mediawiki/wiki/arrowhead-f/index.php/Local_automation_clouds
[nodej]: https://nodejs.org
[npmac]: https://www.npmjs.com/package/ahfc-client
[npmjs]: https://www.npmjs.com/
[npmst]: https://www.npmjs.com/package/ahfc-client/tutorial

---
_Source: https://npm.io/package/ahfc-client · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
