open-index/open-npm huggingface dataset:
npm package: @signpostmarv/intermediary-number
Description: intermediary number & calculator classes for SignpostMarv's Docs.json.ts-driven production planner
Latest version: 0.7.0

[![Coverage Status](https://coveralls.io/repos/github/SignpostMarv/Intermediary-Number/badge.svg?branch=main)](https://coveralls.io/github/SignpostMarv/Intermediary-Number?branch=main)
[![Workflow Status](https://github.com/SignpostMarv/Intermediary-Number/actions/workflows/node.js.yml/badge.svg?branch=main)](https://github.com/SignpostMarv/Intermediary-Number/actions/workflows/node.js.yml?query=branch%3Amain)

# Intermediary Number

Intermediary Number classes & utilities for the [Production Calculator](https://github.com/satifactory-dev/Satisfactory-Production-Calculator) for Satisfactory built upon [Docs.json.ts](https://github.com/satisfactory-dev/Docs.json.ts).

## Using

### Requirements

- Docker
    - vscode recommended to use devcontainer support

### Setup

1. Checkout locally
1. Load in devcontainer-supporting IDE
    - devcontainer setup should automatically run `npm install`
1. Run `make generate`

## Documentation

No documentation as of yet 😬

Please refer to the tests in the meantime.

## Issues

- Issue tracker for all the related projects except Docs.json.ts are [available on GitHub](https://github.com/orgs/satisfactory-dev/projects/1).
- [Issues with Docs.json.ts currently need to be viewed separately](https://github.com/satisfactory-dev/Docs.json.ts/issues).
npm package: @signpostmarv/json-schema-typescript-codegen
Description: JSON Schema TypeScript CodeGen
Latest version: 0.8.1

[![Coverage Status](https://coveralls.io/repos/github/SignpostMarv/JSON-Schema-TypeScript-CodeGen/badge.svg?branch=main)](https://coveralls.io/github/SignpostMarv/JSON-Schema-TypeScript-CodeGen?branch=main)
[![Workflow Status](https://github.com/SignpostMarv/JSON-Schema-TypeScript-CodeGen/actions/workflows/node.js.yml/badge.svg?branch=main)](https://github.com/SignpostMarv/JSON-Schema-TypeScript-CodeGen/actions/workflows/node.js.yml?query=branch%3Amain)

# JSON Schema TypeScript CodeGen

From-scratch rewrite of the JSON Schema-based TypeScript Code Generation code originally implemented for [Docs.json.ts](https://github.com/satisfactory-dev/Docs.json.ts)

## FAQ

### Why a rewrite?

I felt I could do better.

- type discovery, data generation, and import/export management were spread over separate areas of the codebase in the original Docs.json.ts implementation (as a consequence of it being developed iteratively as needed).
- candidate classes now manage both type conversion _and_ data conversion.
- import/export management is now largely driven by the `$ref` type support.
    - Yes, `$ref` technically lies about it's internals, but attempting to retain the overall interface of the candidate classes while having `$ref` be fully honest about it's internals gave me a headache.

### What's it for?

Taking a JSON Schema with corresponding JSON & generating TypeScript bindings for said data.

### Why not use the raw JSON once it's passed validation with ajv?

Docs.json.ts is intended to work with JSON files that contain data that wasn't serialised with JSON.
Templated Strings in TypeScript also allow one to be less verbose in how one represents known values, e.g. typing something as that passes the regex `^foo.*(?:bar|baz)$` as more specific than just `string` but less verbose (i.e. `foo${string}${'bar'|'baz'}`) than 10s/100s/1000s of exact values.

## Install

`npm install --save-dev @signpostmarv/json-schema-typescript-codegen`

### Requirements

- Node >= 24, for `RegExp.escape()`
    - this allows the pattern support in the rewrite to be considerably more flexible than the original pattern support in Docs.json.ts.
- Node >= 23, for running TS files without needing to run a compile step.

### Notes

- ~~Currently distributed as a pure typescript package~~ it _would_ be distributed as a pure typescript package, were it not for [nodejs/node#57215](https://github.com/nodejs/node/issues/57215)
- Inherently tied to [Ajv](https://github.com/ajv-validator/ajv) due to the requirement for their custom keywords implementation.
- Does not currently have a complete implementation of standard JSON keywords
npm package: @signpostmarv/oxlint-config
Description: Oxlint Config
Latest version: 0.3.1

[![Coverage Status](https://coveralls.io/repos/github/SignpostMarv/oxlint-config/badge.svg?branch=main)](https://coveralls.io/github/SignpostMarv/oxlint-config?branch=main)
[![Workflow Status](https://github.com/SignpostMarv/oxlint-config/actions/workflows/node.js.yml/badge.svg?branch=main)](https://github.com/SignpostMarv/oxlint-config/actions/workflows/node.js.yml?query=branch%3Amain)

# Installation

`npm install --save-dev @signpostmarv/oxlint-config`

# Usage

```json
{
	"$schema": "./node_modules/oxlint/configuration_schema.json",
	"extends": [
		"./node_modules/@signpostmarv/oxlint-config/.oxlintrc.typescript.json"
	]
}
```

```Makefile
lint--oxlint:
	@echo 'checking oxlint for all issues with typescript files'
	@./node_modules/.bin/oxlint --config ./.oxlintrc.typescript.json ./*.ts --ignore-pattern '**/**/*.d.ts'
	@echo 'build config'
	@./node_modules/.bin/tsc --project ./tsconfig.eslint.json
	@echo 'checking oxlint for all issues with config'
	@./node_modules/.bin/oxlint --config ./.oxlintrc.javascript.json './**/*.mjs'
```
npm package: @signpostmarv/setup-performance-observer
Description: assistance in setting up PerformanceObserver
Latest version: 0.1.3

[![Coverage Status](https://coveralls.io/repos/github/satisfactory-dev/setup-PerformanceObserver/badge.svg?branch=main)](https://coveralls.io/github/satisfactory-dev/setup-PerformanceObserver?branch=main)
[![Workflow Status](https://github.com/satisfactory-dev/setup-PerformanceObserver/actions/workflows/node.js.yml/badge.svg?branch=main)](https://github.com/satisfactory-dev/setup-PerformanceObserver/actions/workflows/node.js.yml?query=branch%3Amain)

# Install

-   `npm install --save-dev @signpostmarv/setup-performance-observer`

# Usage

```ts
import setup_PerformanceObserver '@signpostmarv/setup-performance-observer';

const instance = new setup_PerformanceObserver({
	clear_lines: false,
	tweak_order_by_prefix: [
		'foo',
		'bar',
	],
});
instance.obs.observe({entryTypes: ['measure'], buffered: true});
// do work here
instance.log(); // maybe add this in a loop or interval
```
npm package: @signpostmarv/ts-assert
Description: TypeScript Assertions
Latest version: 0.4.3

[![Coverage Status](https://coveralls.io/repos/github/SignpostMarv/ts-assert/badge.svg?branch=main)](https://coveralls.io/github/SignpostMarv/ts-assert?branch=main)
[![Workflow Status](https://github.com/SignpostMarv/ts-assert/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/SignpostMarv/ts-assert/actions/workflows/ci.yml?query=branch%3Amain)

# @signpostmarv/ts-assert

Code-generated assertions for TypeScript type guarding functions.

# Usage

```ts
import {describe, it} from 'node:test';
import assert from 'node:assert/strict';
import ts_assert from '@signpostmarv/ts-assert';
import ts from 'typescript';

void describe('isIdentifier', () => {
	void it('throws', () => {
		assert.throws(() =>
			ts_assert.isIdentifier(ts.factory.createStringLiteral('foo'))
		);
	});
});

void describe('isEmptyBindingPattern', () => {
	void it('throws', () => {
		assert.throws(() =>
			ts_assert.isEmptyBindingPattern(ts.factory.createIdentifier('foo'))
		);
	});
});

void describe('isBooleanLiteral', () => {
	void it('throws', () => {
		assert.throws(() =>
			ts_assert.isBooleanLiteral(
				ts.factory.createStringLiteral('foo'),
				true
			)
		);
		assert.throws(() =>
			ts_assert.isBooleanLiteral(ts.factory.createFalse(), true)
		);
		assert.throws(() =>
			ts_assert.isBooleanLiteral(ts.factory.createTrue(), false)
		);
	});
	void it('does not throw', () => {
		assert.doesNotThrow(() =>
			ts_assert.isBooleanLiteral(ts.factory.createTrue(), true)
		);
		assert.doesNotThrow(() =>
			ts_assert.isBooleanLiteral(ts.factory.createFalse(), false)
		);
	});
});

void describe('isTokenWithExpectedKind', () => {
	void it('throws', () => {
		assert.throws(() =>
			ts_assert.isTokenWithExpectedKind(
				ts.factory.createStringLiteral('foo'),
				ts.SyntaxKind.StringKeyword
			)
		);
		assert.throws(() =>
			ts_assert.isTokenWithExpectedKind(
				ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
				ts.SyntaxKind.NumberKeyword
			)
		);
	});
	void it('does not throw', () => {
		assert.doesNotThrow(() =>
			ts_assert.isTokenWithExpectedKind(
				ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
				ts.SyntaxKind.StringKeyword
			)
		);
	});
});
```
npm package: @signumjs/contracts
Description: Smart Contracts package for Signum Network
Latest version: 3.0.10

# @signumjs/contracts

Utility functions to interact with smart contract of the Signum blockchain platform

## Installation

`@signumjs/contracts` can be used with NodeJS or Web. Two formats are available

### Using with NodeJS and/or modern web frameworks

Install using [npm](https://www.npmjs.org/):

```
npm install @signumjs/contracts
```

or using [yarn](https://yarnpkg.com/):

``` yarn
yarn add @signumjs/contracts
```

#### Example

```js
// TO DO
```

### Using in classic `<script>`

Each package is available as bundled standalone library using UMD.
This way _signumJS_ can be used also within `<script>`-Tags.
This might be useful for Wordpress and/or other PHP applications.

Just import the package using the HTML `<script>` tag.

`<script src='https://cdn.jsdelivr.net/npm/@signumjs/http/dist/signumjs.contracts.min.js'></script>`

#### Example

```js
// TO DO
```

See more here:

[@signumjs/contracts Online Documentation](https://signum-network.github.io/signumjs/modules/contracts.html)
npm package: @signumjs/http
Description: SignumJS Generic Http Module
Latest version: 3.0.10

# @signumjs/http

Generic HTTP client that is used as a network provider for @signumjs/core.

## Installation

`@signumjs/http` can be used with NodeJS or Web. Two formats are available

### Using with NodeJS and/or modern web frameworks

Install using [npm](https://www.npmjs.org/):

```
npm install @signumjs/http
```

or using [yarn](https://yarnpkg.com/):

``` yarn
yarn add @signumjs/http
```

#### Example

```js
import {HttpImpl} from '@signumjs/http'

async function getTodos() {
    try{
        const client = new HttpClientFactory.createHttpClient('https://jsonplaceholder.typicode.com/');
        const result = await client.get('/todos/1')
        console.log(result)
    }
    catch(httpError){
        console.error(httpError.message)
    }
}
```

### Using in classic `<script>`

Each package is available as bundled standalone library using UMD.
This way _signumJS_ can be used also within `<script>`-Tags.
This might be useful for Wordpress and/or other PHP applications.

Just import the package using the HTML `<script>` tag.

`<script src='https://cdn.jsdelivr.net/npm/@signumjs/http/dist/signumjs.http.min.js'></script>`

#### Example

```js
const {HttpClientFactory} = sig$http
const client = new HttpClientFactory.createHttpClient('https://jsonplaceholder.typicode.com/');
client.get('/todos/1').then(console.log)
```

See more here:

[@signumjs/http Online Documentation](https://signum-network.github.io/signumjs/modules/http.html)
npm package: @signumjs/monitor
Description: Monitor transactions on Signum Network blockchain
Latest version: 1.0.0-rc.75

# @signumjs/monitor

A monitor to watch for specific changes on the Signum blockchain platform

Due to average blocktime of 240 seconds, transactions stay pending for a certain time. It is a repeating pattern
to watch for such changes and waiting for confirmation. This package simplifies this task.

## Installation

`@signumjs/monitor` can be used with NodeJS or Web. Two formats are available

### Using with NodeJS and/or modern web frameworks

Install using [npm](https://www.npmjs.org/):

```
npm install @signumjs/monitor
```

or using [yarn](https://yarnpkg.com/):

``` yarn
yarn add @signumjs/monitor
```

#### Example

// TODO:

```js
import {Monitor} from '@signumjs/monitor'
import {composeApi} from "@signumjs/core";

// A method that checks if an account exists
// > IMPORTANT: Do not use closures, when you need to serialize the monitor
async function tryFetchAccount() {
    const api = composeApi({ nodeHost: 'https://testnet.signum.network:6876/'})
    try{
        const {account} = await api.account.getAccount('1234')
        return account;
    }catch (e){
        // ignore error
        return null;
    }
}

// A comparing function to check if a certain condition for the returned data from fetch function
// is true. If it's true the monitor stops
function checkIfAccountExists(account) {
    return account !== null;
}

// Create your monitor
const monitor = new Monitor({
    asyncFetcherFn: tryFetchAccount,
    compareFn: checkIfAccountExists,
    intervalSecs: 10, // polling interval in seconds
    key: 'monitor-account',
    timeoutSecs: 2 * 240 // when reached timeout the monitor stops
});
// starts monitor
monitor.start();

// called when `checkIfAccountExists` returns true
monitor.onFulfilled(() => {
    console.log('Yay, account active');
});

// called when `timeoutSecs` is reached
monitor.onTimeout(() => {
    console.log('Hmm, something went wrong');
});

```

### Using in classic `<script>`

Each package is available as bundled standalone library using UMD.
This way _signumJS_ can be used also within `<script>`-Tags.
This might be useful for Wordpress and/or other PHP applications.

Just import the package using the HTML `<script>` tag.

`<script src='https://cdn.jsdelivr.net/npm/@signumjs/monitor/dist/signumjs.monitor.min.js'></script>`

#### Example

```js
const {Monitor} = sig$Monitor;
const monitor = new Monitor({
    //...
});
monitor.start()
monitor.onFulFilled(() => {
    //...
})
```

See more here:

[@signumjs/monitor Online Documentation](https://signum-network.github.io/signumjs/modules/monitor.html)
npm package: @signumjs/react-native-expo-crypto-adapter
Description: This is the React Native Expo implementation of the CryptoAdapter for @signumjs/crypto
Author: ohager
Latest version: 1.0.5

# SignumJS Crypto Adapter for React Native EXPO

This is the React Native Expo implementation of the CryptoAdapter for [@signumjs/crypto](https://signum-network.github.io/signumjs/modules/crypto.html)

> Note: this adapter does only work with Expo - not for bare React Native!

For any Crypto operations, like signing transactions, en/decrypting P2P messages or even hash related operations
you need to install this adapter.

## Installation

1. Install the package in your Expo Project (see [Example](./demo))

```bash
npm install @signumjs/crypto @signumjs/react-native-expo-crypto-adapter
```

2. Create or modify the Expo Apps `metro.config.js` to remove default crypto adapters from bundler

```js
// metro.config.js
const { getDefaultConfig } = require('@expo/metro-config');

const defaultConfig = getDefaultConfig(__dirname);
defaultConfig.resolver.blockList = [
    /@signumjs\/crypto\/adapters\/.+$/
];
module.exports = defaultConfig;

```

3. Initialize the Crypto Module to use the "native" Expo Crypto Adapter

In your entry point of your application, e.g. `./app/_layout.tsx` you have to add the following code:

```ts

/**
 * The next steps are required to initialize signumjs/crypto module for Expo
 */
import {Crypto} from '@signumjs/crypto'
import {ReactNativeExpoCryptoAdapter} from "@signumjs/react-native-expo-crypto-adapter"

Crypto.init(new ReactNativeExpoCryptoAdapter());
```

# Example

Find a complete example app [here](./demo/README.md)


# Troubleshooting
npm package: @signumjs/standards
Description: SignumJS Standards (SRC) tooling package
Latest version: 3.0.10

# @signumjs/standards

This package implements all established [Signum standards (SRC- Signum Request for Comments)](https://github.com/signum-network/SIPs/tree/master/SRC)

## Installation

`@signumjs/standards` can be used with NodeJS or Web. Two formats are available

### Using with NodeJS and/or modern web frameworks

Install using [npm](https://www.npmjs.org/):

```
npm install @signumjs/standards
```

or using [yarn](https://yarnpkg.com/):

``` yarn
yarn add @signumjs/standards
```

### Using in classic `<script>`

Each package is available as bundled standalone library using UMD.
This way _signumJS_ can be used also within `<script>`-Tags.
This might be useful for Wordpress and/or other PHP applications.

Just import the package using the HTML `<script>` tag.

`<script src='https://cdn.jsdelivr.net/npm/@signumjs/standards/dist/signumjs.standards.min.js'></script>`


See more here:

[@signumjs/standards Online Documentation](https://signum-network.github.io/signumjs/modules/standards.html)
npm package: @signumjs/util
Description: Useful utilities and tools for building Signum Network applications
Latest version: 3.0.10

# @signumjs/util

Useful utilities and tools for building Signum blockchain applications

## Installation

`@signumjs/util` can be used with NodeJS or Web. Two formats are available

### Using with NodeJS and/or modern web frameworks

Install using [npm](https://www.npmjs.org/):

```
npm install @signumjs/util
```

or using [yarn](https://yarnpkg.com/):

``` yarn
yarn add @signumjs/util
```

#### Example

```js
import {Amount} from '@signumjs/util'

const value = Amount.fromSigna(1000)
console.log(value.toString())
```

### Using in classic `<script>`

Each package is available as bundled standalone library using UMD.
This way _signumJS_ can be used also within `<script>`-Tags.
This might be useful for Wordpress and/or other PHP applications.

Just import the package using the HTML `<script>` tag.

`<script src='https://cdn.jsdelivr.net/npm/@signumjs/util/dist/signumjs.util.min.js'></script>`

#### Example

```js
const {Amount} = sig$util
const value = Amount.fromSigna(1000)
console.log(value.toString())
```

See more here:

[@signumjs/util Online Documentation](https://signum-network.github.io/signumjs/modules/util.html)
npm package: @signumjs/wallets
Description: Wallets communication package for DApps in the Signum Network
Latest version: 3.0.10

# @signumjs/wallets

This package is for DApp Developers who need to interact/communicate with the wallets of the Signum blockchain platform
It provides currently two modes of interaction:

- Deeplinking
    - One-way communication
    - Desktop and Mobile Wallets
- Browser Extension Intercom
    - Two-way communication
    - Browser-only Wallets

## Installation

`@signumjs/wallets` can be used with NodeJS or Web. Two formats are available

### Using with NodeJS and/or modern web frameworks

Install using [npm](https://www.npmjs.org/):

```
npm install @signumjs/wallets
```

or using [yarn](https://yarnpkg.com/):

``` yarn
yarn add @signumjs/wallets
```

#### Example

```js
// TO DO
```

### Using in classic `<script>`

Each package is available as bundled standalone library using UMD.
This way _signumJS_ can be used also within `<script>`-Tags.
This might be useful for Wordpress and/or other PHP applications.

Just import the package using the HTML `<script>` tag.

`<script src='https://cdn.jsdelivr.net/npm/@signumjs/wallets/dist/signumjs.wallets.min.js'></script>`

#### Example

See the [examples folder](https://github.com/signum-network/signumjs/tree/main/examples) 


See more here:

[@signumjs/wallets Online Documentation](https://signum-network.github.io/signumjs/modules/wallets.html)