open-index/open-npm huggingface dataset:
npm package: @rxcc/contracts
Description: utility functions for checking contracts
Author: brucou
Latest version: 0.1.11

# Contract utilities
This library provides with helper functions, whose goal is to check miscellaneous conditions 
enclosed in contracts. This include type checking, and the utilities supporting type checking and
 error handling.

# Documentation
There is no documentation so far, except comments in the code.

# Installation

# Test
Not much in term of tests. Just tested the umd build in a browser environment (open the relevant 
`index.html` in a local web server).

# Contribute
Open an issue with your idea.

# Known issues
Cf. `NOTES.md` if any
npm package: @rxcc/debug
Description: utility functions for debugging component combinators
Author: brucou
Latest version: 0.1.7
Deprecated: this package has been deprecated. Use @rxcc/utils

# Debug utilities
This library provides with helper functions, whose goal is to support debugging of reactive 
applications implemented with component combinators.

# Documentation
There is no documentation so far, except comments in the code.

# Installation

# Test
Not much in term of tests. Just tested the umd build in a browser environment (open the relevant 
`index.html` in a local web server).

# Contribute
Open an issue with your idea.

# Known issues
Cf. `NOTES.md` if any
npm package: @rxcc/drivers
Description: drivers for component combinators library
Author: brucou
Latest version: 0.1.9

# A few common drivers
This library provides drivers, to support effect/action execution in the context of a reactive 
application implemented with component combinators.

# Documentation
The current documentation exists :

- [Action driver](http://brucou.github.io/projects/component-combinators/actiondriver/)
- [Query driver](http://brucou.github.io/projects/component-combinators/querydriver/)
- [document driver](http://brucou.github.io/projects/component-combinators/querydriver/)

The document driver as of now only inject the global `document` object in the `sources` object. 
Any existing documentation applying to that object is hence relevant, and as such we provide none
 for it.

# Installation

# Test
Not much in term of tests. Just tested the umd build in a browser environment (open the relevant 
`index.html` in a local web server).

# Contribute
Open an issue with your idea.

# Known issues
Cf. `NOTES.md` if any
npm package: @rxcc/helpers
Description: helper functions supporting the component combinators library
Author: brucou
Latest version: 0.1.3
Deprecated: this package has been deprecated. Use @rxcc/utils

# Helper utilities
This library provides with helper functions, whose goal is to support the implementation of 
reactive applications implemented with component combinators.

# Documentation
There is no documentation so far, except comments in the code.

# Installation

# Test
Not much in term of tests. Just tested the umd build in a browser environment (open the relevant 
`index.html` in a local web server).

# Contribute
Open an issue with your idea.

# Known issues
Cf. `NOTES.md` if any
npm package: @rxcc/testing
Description: testing utilities for component combinators library
Author: brucou
Latest version: 0.1.3

# Testing utilities
This package provides testing utilities. It includes a set of mocks for the drivers included with
 the standard distribution of the component combinators library. It also features a test helper 
 (`runTestScenario`) which runs tests involving component functions.

# Documentation
The current documentation exists :

- [`runTestScenario`](http://brucou.github.io/projects/component-combinators/runtestscenario/)
- [mock DOM driver](http://brucou.github.io/projects/component-combinators/mocking-the-dom-driver/)
- [mock document driver](http://brucou.github.io/projects/component-combinators/mocking-the-document-driver/)
- [mock query driver](http://brucou.github.io/projects/component-combinators/mocking-the-query-driver/)

# Installation

# Test
Some tests available in the [tests folder](https://github.com/brucou/component-combinators/tree/master/test) (`runTestScenario.specs`, `mockDomainQuery.specs`).

# Contribute
Open an issue with your idea.

# Known issues
Cf. `NOTES.md` if any
npm package: @rxcc/utils
Description: miscellaneous utility functions to keep an implementation DRY
Author: brucou
Latest version: 0.1.8

# Helper utilities
This library provides with miscellaneous utility functions, whose goal is to keep DRY the 
implementation of reactive applications implemented with component combinators.

# Documentation
There is no documentation so far, except comments in the code.

# Installation

# Test
Not much in term of tests. Just tested the umd build in a browser environment (open the relevant 
`index.html` in a local web server).

# Contribute
Open an issue with your idea.

# Known issues
Cf. `NOTES.md` if any
npm package: @rxclient/req
Description: It is a package that allows you to interact with the RXWEB API, offering information on endpoints available to your liking in your project.
Author: Seraph
Latest version: 1.0.4

# Information

[![npm version](https://img.shields.io/npm/v/@rxclient/req.svg)](https://www.npmjs.com/package/@rxclient/req)
[![npm downloads](https://img.shields.io/npm/dm/@rxclient/req.svg)](https://www.npmjs.com/package/@rxclient/req)
[![license](https://img.shields.io/npm/l/@rxclient/req.svg)](https://opensource.org/licenses/MIT)

Mainly created for users who use the [RXWEB API](https://api.rxweb.xyz) and use JavaScript for their projects.

# Installation
npm
```console
npm i @rxclient/req
```

yarn
```console
yarn add @rxclient/req
```

# Usage
```js
const { EndpointGet, data } = require("@rxclient/req");

// With parameters
EndpointGet("utils", "calculator", { operation: "125*123" })
  .then(() => {
    console.log("The result of the mathematical operation is:", data.utils_calculator.result) // We get the information from the API
  })

// No parameters
EndpointGet("text", "funfacts")
  .then(() => {
    console.log(data.text_funfacts.results)
  })
```

# Docs
### `EndpointGet(category, route, optional: { parameters })`
- `category`: Category where the route is located. (For example: `EndpointGet("utils")`)
- `route`: The endpoint route. (For example: `EndpointGet("utils", "calculator")`)
- `{ parameters }`: Only necessary if parameters are required on the endpoint; the endpoint parameters to make it work. (For example: `EndpointGet("utils", "calculator", { operation: "25*25" })`)
### `data.category_route.(optional):specific_result`
- `category`: Endpoint category. (For example: `data.utils`)
- `route`: The endpoint route. (For example: `data.utils_calculator`)
- `specific_result`: Returns a specific response based on the JSON; if left empty, it will return all endpoint JSON. (For example: `data.utils_calculator.result`)

## No specific response
```js
const { EndpointGet, data } = require("@rxclient/req")

EndpointGet("utils", "calculator", { operation: "125*123" })
  .then(() => {
    console.log(data.utils_calculator)
  })
```
### Result
[![No specific response](https://cdn.discordapp.com/attachments/1122323568181657711/1230400622965161984/image.png?ex=66332ee0&is=6620b9e0&hm=8078711c57d8ebde4c1d9513121852d87815f347d874acbeacc0bcc70cfb5ee0&)]

## Specific form
```js
const { EndpointGet, data } = require("@rxclient/req")

EndpointGet("utils", "calculator", { operation: "125*123" })
  .then(() => {
    console.log(data.utils_calculator.result)
  })
```

### Result
[![Specific form](https://cdn.discordapp.com/attachments/1122323568181657711/1230582290766102699/image.png?ex=6633d811&is=66216311&hm=c8f4f2761c5724086877c9b39d7668d4017c77e907d00bfc14d6f56f5609a4ce&)]

### Tip
Find out which endpoints are available by entering [/endpoints.](https://api.rxweb.xyz/endpoints)
npm package: @rxdi/altair
Description: ##### More information about Altair can be found here [Altair](https://altairgraphql.dev/docs)
Author: Kristian Tachev
Latest version: 0.7.237

# @rxdi Altair Playground

##### More information about Altair can be found here [Altair](https://altairgraphql.dev/docs)

##### This module is intended to be used with [rxdi](https://github.com/rxdi/core)

## Installation and basic examples:

##### To install this Gapi module, run:

```bash
$ npm install @rxdi/altair
```

## Consuming @rxdi/graphql

##### Import inside AppModule or CoreModule

```typescript
import { Module } from '@rxdi/core';

@Module({
 imports: [
  AltairModule.forRoot({
   baseURL: 'http://localhost:9000/altair/',
   endpointURL: 'http://localhost:9000/graphql',
   subscriptionsEndpoint: 'http://localhost:9000/subscriptions',
   initialQuery: `{ status { status } }`,
  }),
 ],
})
export class AppModule {}
```

<img width="1920" height="860" alt="Screenshot from 2025-12-24 01-38-03" src="https://github.com/user-attachments/assets/30fb08d7-5c47-43e2-93f6-fec8e73219f6" />


Now open http://localhost:9000/altair and Njoy! :)
npm package: @rxdi/browser-server
Author: Kristiyan Tachev
Latest version: 0.7.47

# Experimental server inside browser inspired by Mafintosh https://github.com/mafintosh/browser-server


#### Install
```bash
npm i @rxdi/browser-server -g
```


#### Load BrowserServerModule

```typescript
import { BootstrapFramework } from '@rxdi/core';
import { AppModule } from './app/app.module';
import { BrowserServerModule } from '@rxdi/browser-server';
import { Worker } from './worker';

BootstrapFramework(AppModule, [
    BrowserServerModule.forRoot({ path: '/worker.js' }),
])
    .subscribe(
        () => console.log('App Started!'),
        (err) => console.error(err)
    );
```


#### Define Worker
npm package: @rxdi/compressor
Description: ##### Install
Author: Kristian Tachev
Latest version: 0.7.237

# @rxdi/compressor

##### Install

```bash
npm install @rxdi/compressor
```

## Consuming

```typescript
import { LZWService } from '@rxdi/compressor';

const myObject = { name: 'Kristiyan Tachev' }
const compressed = LZWService.compress(myObject)

const decompressed = LZWService.decompress(compressed);
/* Prints: { name: 'Kristiyan Tachev' } */
```
npm package: @rxdi/credit-card-form
Description: ##### Install
Author: Kristian Tachev
Latest version: 0.7.237

# @rxdi/credit-card-form

##### Install

```bash
npm install @rxdi/credit-card-form
```

## Consuming

```typescript
import "@rxdi/credit-card-form";
import { CardModel } from "@rxdi/credit-card-form";
import { html } from "@rxdi/lit-html";

const template = html`
  <credit-card-form
    @submit=${(e: CustomEvent<CardModel>) => {
      e.detail.card;
      e.detail.expiry;
      e.detail.cvc;
      e.detail.name;
    }}
  ></credit-card-form>
`;
```

## Preview

![image info](./docs-images/front.png)
![image info](./docs-images/back.png)
npm package: @rxdi/graph-gateway
Description: Create easy `graph` gatway from existing Graphql endpoints
Author: Kristian Tachev
Latest version: 0.7.47

# @rxdi/graph-gateway

Create easy `graph` gatway from existing Graphql endpoints

## Features

- Merge multiple Remote graphql servers to single schema
- Microservice architecture


## Installation

```bash
npm i -g @rxdi/graph-gateway
```

## Usage

```typescript
import {
  Module,
  CoreModule,
  Bootstrap,
  ON_REQUEST_HANDLER,
  GRAPHQL_PLUGIN_CONFIG
} from '@gapi/core';
import {
  MicroserviceModule,
  AFTER_MIDDLEWARE,
  BEFORE_MIDDLEWARE,
  MiddlewareOptions
} from '@rxdi/graph-gateway';
import { ResponseToolkit } from 'hapi';

@Module({
  providers: [
    {
      provide: ON_REQUEST_HANDLER,
      deps: [GRAPHQL_PLUGIN_CONFIG],
      useFactory: (config: GRAPHQL_PLUGIN_CONFIG) => async (
        next,
        request: Request,
        h: ResponseToolkit,
        err: Error
      ) => {
        config.graphqlOptions.context = config.graphqlOptions.context || {};
        config.graphqlOptions.context['headers'] = request.headers;
        console.log('On request handler');
        return next();
      }
    },
    {
      provide: BEFORE_MIDDLEWARE,
      useFactory: () => (options: MiddlewareOptions) => {
        console.log('Before Middleware', options.headers);
        return options;
      }
    },
    // Notice how after middleware has multi injection so you can specify which values to return
    // This behaviour is valid only for After middleware
    {
      provide: AFTER_MIDDLEWARE,
      useFactory: () => (res, options: MiddlewareOptions) => {
        if (res.statusCode && res.statusCode !== 200) {
          throw new Error('Unauthorized');
        }
        console.log('RES1', res);
        return res;
      }
    },
    {
      provide: AFTER_MIDDLEWARE,
      useFactory: () => (res, options: MiddlewareOptions) => {
        console.log('RES2', res);
        return res;
      }
    }
  ],
  imports: [
    MicroserviceModule.forRoot([
      {
        link: 'http://localhost:9000/graphql',
        name: 'Main'
      },
      {
        link: 'http://localhost:9001/graphql',
        name: 'Main2'
      }
    ]),
    CoreModule.forRoot()
  ]
})
export class AppModule {}

Bootstrap(AppModule).subscribe(() => console.log('Started'));

```


## Middleware options
```typescript
export interface MicroserviceInterface {
  name: string;
  link: string;
}
export interface MiddlewareOptions {
  context: Object;
  operationName: string;
  variables: Object;
  query: string;
  microservice: MicroserviceInterface;
  method: string | 'POST' | 'GET';
  headers: { [key: string]: string };
}
```
npm package: @rxdi/graphql-pubsub-test
Description: ##### More information about Hapi server can be found here [Hapi](https://hapijs.com/)
Author: Kristian Tachev
Latest version: 0.7.237

# @rxdi Graphql-Pub-Sub Module

##### More information about Hapi server can be found here [Hapi](https://hapijs.com/)

##### For questions/issues you can write ticket [here](http://gitlab.youvolio.com/rxdi/graphql/issues)

##### This module is intended to be used with [rxdi](https://github.com/rxdi/core)

## Installation and basic examples:

##### To install this Gapi module, run:

```bash
$ npm install @rxdi/graphql-pubsub --save
```

## Consuming @rxdi/graphql-pubsub

##### Import inside AppModule or CoreModule

```typescript
import { Module } from "@rxdi/core";
import { HapiModule } from "@rxdi/hapi";
import { GraphQLPubSubModule } from "@rxdi/graphql-pubsub";

@Module({
  imports: [GraphQLPubSubModule.forRoot()],
})
export class CoreModule {}
```

Correct usage with `@rxdi/graphql`

```typescript
import { Module } from "@rxdi/core";
import { HapiModule } from "@rxdi/hapi";
import { GraphQLModule } from "@rxdi/graphql";
import { GraphQLPubSubModule } from "@rxdi/graphql-pubsub";

@Module({
  imports: [
    HapiModule.forRoot({
      hapi: {
        port: 9000,
      },
    }),
    GraphQLModule.forRoot({
      path: "/graphql",
      writeEffects: false,
      graphqlOptions: {
        schema: null,
      },
    }),
    GraphQLPubSubModule.forRoot(),
  ],
})
export class CoreModule {}
```

Options for pubsub server can be defined like so

```ts
GraphQLPubSubModule.forRoot({
  activateRabbitMQ: false,
  host: "182.10.0.5",
  port: 5672,
  // authentication: AuthService as never,
  subscriptionServerOptions: {
    perMessageDeflate: {
      zlibDeflateOptions: {
        // See zlib defaults.
        chunkSize: 1024,
        memLevel: 7,
        level: 3,
      },
      zlibInflateOptions: {
        chunkSize: 10 * 1024,
      },
      // Other options settable:
      clientNoContextTakeover: true, // Defaults to negotiated value.
      serverNoContextTakeover: true, // Defaults to negotiated value.
      serverMaxWindowBits: 10, // Defaults to negotiated value.
      // Below options specified as default values.
      concurrencyLimit: 10, // Limits zlib concurrency for perf.
      threshold: 1024, // Size (in bytes) below which messages
      // should not be compressed.
    },
  },
});
```

TODO: Better documentation...

Enjoy ! :)
npm package: @rxdi/hapi
Description: ##### More information about Hapi server can be found here [Hapi](https://hapijs.com/) ##### For questions/issues you can write ticket [here](http://gitlab.youvolio.com/rxdi/hapi/issues) ##### This module is intended to be used with [rxdi](https://github.
Author: Kristian Tachev
Latest version: 0.7.237

# @rxdi Hapi Module

##### More information about Hapi server can be found here [Hapi](https://hapijs.com/)
##### For questions/issues you can write ticket [here](http://gitlab.youvolio.com/rxdi/hapi/issues)
##### This module is intended to be used with [rxdi](https://github.com/rxdi/core)

## Installation and basic examples:
##### To install this Gapi module, run:

```bash
$ npm install @rxdi/hapi --save
```

## Consuming @rxdi/hapi

##### Import inside AppModule or CoreModule
```typescript
import { Module } from "@rxdi/core";
import { HapiModule } from "@rxdi/hapi";

@Module({
    imports: [
        HapiModule.forRoot({
            hapi: {
                port: 9000
            }
        })
    ]
})
export class CoreModule {}
```

Create Hapi plugin
Note: To use it plugin needs to be imported inside `plugins` otherwise can be @Service read down

```typescript


import { PluginInterface, Inject, Module, Plugin } from '@rxdi/core';
import { UserService } from './services';
import { HAPI_SERVER } from '@rxdi/hapi';
import { Server } from 'hapi';

@Plugin()
export class TestHapiService implements PluginInterface {

    constructor(
        @Inject(HAPI_SERVER) private server: Server
    ) {}

    async register() {
        this.server.route({
            method: 'GET',
            path: '/test',
            handler: this.handler.bind(this)
        });
    }

    async handler(request, h) {
        return 'dadda2';
    }

}

@Module({
    plugins: [TestHapiService],
})
export class UserModule { }
```

If you don't want to import it like a plugin you can set it as a @Service and import it inside `services` 
One downside is that you need to trigger `register()` method on constructor initialization like so because you will not get your route added to hapi.

```typescript
import { PluginInterface, Inject, Service, Module } from '@rxdi/core';
import { HAPI_SERVER } from '@rxdi/hapi';
import { Server } from 'hapi';

@Service()
export class TestHapiService implements PluginInterface {

    constructor(
        @Inject(HAPI_SERVER) private server: Server
    ) {
        this.register();
    }

    async register() {
        this.server.route({
            method: 'GET',
            path: '/test',
            handler: this.handler.bind(this)
        });
    }

    async handler(request, h) {
        return 'dada1';
    }

}

@Module({
    services: [TestHapiService]
})
export class UserModule { }
```


TODO: Better documentation...

Enjoy ! :)
npm package: @rxdi/hotkeys
Description: ### Installation
Author: Kristiyan Tachev
Latest version: 0.7.237

# @rxdi/hotkeys

### Installation

```bash
npm i @rxdi/hotkeys
```

```ts
import { Module } from "@rxdi/core";
import { HotkeyModule } from "@rxdi/hotkeys";

@Module({
  imports: [
    HotkeyModule.forRoot({
      globalBindings: [
        [
          "ctrl+a",
          (e) => {
            console.log(e, "It works");
          },
        ],
      ],
    }),
  ],
})
export class AppModule {}
```

```ts
import { Injectable } from '@rxdi/core';
import { HotKeysService } from '@rxdi/hotkeys';

@Injectable()
export class HotkeysProvider {

 @Inject(HotKeysService)
 private hotkeys: HotKeysService;

 OnInit() {
   /* Binding from event */
  const sub = this.hotkeys.bind('ctrl+a').subscribe((stream) => {
   console.log('It works', stream);
  });

  /* Unbinding from event */
  sub.unsubscribe()
}
```
npm package: @rxdi/http
Author: Kristiyan Tachev
Latest version: 0.7.237

# @rxdi/http



### Installation

```bash
npm i @rxdi/http
```

```ts
import { Module } from '@rxdi/core';

@Module({
  imports: [
    HttpModule.forRoot({ url: 'http://localhost:9000/graphql' }),
  ]
})
export class AppModule {}
```


```ts
import { Injectable, Inject } from '@rxdi/core';
import { HttpClient, gql } from '@rxdi/http';
import { map } from 'rxjs/operators';


interface EnumGraphql {
  name: string;
  enumValues: {
    name: string;
    description: string;
    isDeprecated: boolean;
  }[];
}

interface Enums {
  instance_commands: EnumGraphql;
  worker_commands: EnumGraphql;
}

interface LinodeRegions {
  data: {
    country: string;
    id: string;
    status: string;
    capabilities: (string | 'Linodes' | 'NodeBalances' | 'Black Storage')[];
  }[];
  page: number;
  pages: number;
  results: number;
}

@Injectable()
export class GraphEnumsProvider {
  @Inject(HttpClient)
  private http: HttpClient;

  getEnums() {
    return this.http
      .query(
        gql`
          query {
            worker_commands: __type(name: "WorkerCommands") {
              name
              enumValues {
                name
                description
                isDeprecated
              }
            }
            instance_commands: __type(name: "InstanceCommands") {
              name
              enumValues {
                name
                description
                isDeprecated
              }
            }
          }
        `
      )
      .pipe(map(({ data }) => data as Enums));
  }

  getLinodeRegions() {
    return this.http.get<LinodeRegions>('https://api.linode.com/v4/regions');
  }

  getLinodeRegionsKeys() {
    return this.getLinodeRegions().pipe(map(i => i.data.map(r => r.id)));
  }
}
```
npm package: @rxdi/install
Description: > This repository is created to help rxdi ipfs packages to be installed easy
Author: Kristiyan Tachev
Latest version: 0.7.190

# Install script for `@rxdi` Inter planetary decentralized node modules

> This repository is created to help rxdi ipfs packages to be installed easy

#### Install globally
```bash
npm i @rxdi/install -g
```

#### Install dependencies
Execute inside root folder of rxdi project
```bash
rxdi-install
```

Will read `package.json` in particular `ipfs` object with properties:
```json
  "ipfs": [{
    "provider": "https://ipfs.io/ipfs/",
    "dependencies": [
      "QmWtJLqyokMZE37DgncpY5HhFvtFQieBzMPDQ318aJeTw6"
    ]
  }],
```

#### Install single dependency:

Short version defaults to `https://ipfs.io/ipfs/`
```bash
rxdi-install QmWtJLqyokMZE37DgncpY5HhFvtFQieBzMPDQ318aJeTw6
```

Long version
```bash
rxdi-install --hash=QmWtJLqyokMZE37DgncpY5HhFvtFQieBzMPDQ318aJeTw6 --provider=https://ipfs.io/ipfs/
```

#### Same command is exposed when you install `@rxdi/core` global syntax is different
```bash
npm i -g @rxdi/core
```

```bash
rxdi install QmWtJLqyokMZE37DgncpY5HhFvtFQieBzMPDQ318aJeTw6
```

Even shorter
```bash
rxdi i QmWtJLqyokMZE37DgncpY5HhFvtFQieBzMPDQ318aJeTw6
```
npm package: @rxdi/lit-html
Description: ```bash npm i @rxdi/lit-html ```
Author: Kristiyan Tachev
Latest version: 0.7.237

#### Install

```bash
npm i @rxdi/lit-html
```

Example component

```typescript
import { LitElement, Component, html, css } from '@rxdi/lit-html';

/**
 * @customElement rx-description
 */
@Component({
  selector: 'rx-description',
  style: css`
    .description {
      color: #222;
      font-size: 14px;
      font-weight: normal;
      text-transform: uppercase;
    }

    .text {
      color: #666;
      font-size: 15px;
      font-weight: normal;
      line-height: 1.5;
    }

    .border {
      border-top: 1px solid #e5e5e5;
      margin-top: 20px;
      padding-top: 20px;
    }
  `,
  template(this: DescriptionListComponent) {
    return html`
      <div class="container" part="container">
        <slot name="description" class="description" part="description"></slot>
        <slot name="text" class="text" part="text"></slot>
        <div class="border" part="border"></div>
      </div>
    `;
  },
})
export class DescriptionListComponent extends LitElement {}
```

#### Modifiers

What is a modifier ?

In order to apply some logic before current template is loaded like custom directives, we need to wrap current template and pass it along the actual modifier template

```typescript
@Component({
  selector: 'my-modifier',
  template() {
    return html`<slot></slot>`;
  },
})
export class MyModifier extends LitElement {
  OnUpdate() {
    const slot = this.shadowRoot.querySelector('slot');
    for (const element of [...slot.assignedElements()]) {
      /// Do something here with element
    }
  }

  public static modifier(template: TemplateResult) {
    return html`<my-modifier>${template}</my-modifier>`;
  }
}
```

Another real example is to add FlexLayout modifier from `@rhtml/modifiers` which will apply useful directives
to be used inside of the html inspired from Angular flex-layout https://github.com/angular/flex-layout/wiki/Declarative-API-Overview

```typescript
import { Component, css, html, LitElement } from '@rxdi/lit-html';

import { FlexLayout } from '@rhtml/modifiers';

/**
 * @customElement home-component
 */
@Component({
  selector: 'home-component',
  style: css`
    .block {
      background: red;
      flex: 1;
    }
    .container {
      height: 200px;
    }
  `,
  modifiers: [FlexLayout],
  template(this: HomeComponent) {
    return html`
      <div class="container" fxLayout="row" fxLayoutGap="10px">
        <div>
          <div class="block" fxLayoutAlign="center center" fxFlexFill>A</div>
        </div>
        <div>
          <div class="block" fxLayoutAlign="center center" fxFlexFill>B</div>
        </div>
        <div>
          <div class="block" fxLayoutAlign="center center" fxFlexFill>C</div>
        </div>
        <div>
          <div class="block" fxLayoutAlign="center center" fxFlexFill>D</div>
        </div>
      </div>
    `;
  },
})
export class HomeComponent extends LitElement {}
```
npm package: @rxdi/monorepo
Description: Create easy `monorepo` with typescript
Author: Kristiyan Tachev
Latest version: 0.7.135

# @rxdi/monorepo

Create easy `monorepo` with typescript

## Features

- No dependencies
- Maintain monorepo with ease
- Created for Typescript
- 2.93 KB bundle

## Installation

```bash
npm i -g @rxdi/monorepo
```

## Usage

#### Create Empty monorepo

```bash
repo create
```

Following structure will be created

```yml
--root
   -src
     -@apps
     -@lib
     -@shared
```

#### Create `library` module

```bash
repo lib 'lib-name'
```

Will create `library` empty module inside `root/src/@lib`

#### Create `shared` module

```bash
repo shared 'lib-name'
```

Will create `shared` empty module inside `root/src/@shared`

#### Compile monorepo

```bash
repo compile
```

Watch mode

```bash
repo compile --watch
```

#### Start all stacks

```bash
repo run
```

#### Start specific stack

```bash
repo run frontend
```

## Configuration
`repo.json` is default file
You can specify more complex runner stacks by passing `-c` argument with path to `custom` json file like so: `repo run frontend -c ./my-custom.json` or running whole stack `repo run -c ./my-custom.json`
```json
{
  "stacks": {
    "frontend": {
      "options": {
        "cwd": "./src/@apps/frontend/",
        "depends": ["gateway"],
        "signal": "Built in"
      },
      "commands": {
        "clean": "rm -rf .cache",
        "link": "gapi daemon link graphql",
        "run": "npm start"
      }
    },
    "api": {
      "options": {
        "signal": "SIGNAL_MAIN_API_STARTED",
        "cwd": "./src/@apps/api/"
      },
      "commands": {
        "clean": "rm -rf .cache",
        "link": "gapi daemon link graphql",
        "run": "npm start"
      }
    },
    "gateway": {
      "options": {
        "signal": "SIGNAL_GATEWAY_STARTED",
        "depends": ["api", "vscode-cloud"],
        "cwd": "./src/@apps/gateway/"
      },
      "commands": {
        "clean": "rm -rf .cache",
        "link": "gapi daemon link graphql",
        "run": "npm start"
      }
    },
    "vscode-cloud": {
      "options": {
        "signal": "SIGNAL_VS_CODE_STARTED",
        "cwd": "./src/@apps/vscode-cloud/"
      },
      "commands": {
        "clean": "rm -rf .cache",
        "link": "gapi daemon link graphql",
        "run": "npm start"
      }
    },
    "compile": {
      "options": {
        "cwd": ".",
        "depends": ["frontend"]
      },
      "commands": {
        "compile": "repo compile --watch"
      }
    }
  }
}
```
npm package: @rxdi/ui-components
Description: UI Components for building graphql-server website
Author: Kristiyan Tachev
Latest version: 0.7.37

# @rxdi/ui-components


* Same version on both Client and Server side
* When component changes the backend api also changes
* Reusability of components

## Components

* [Hamburger](/src/hamburger/README.md)
* [Loading Screen](/src/loading-screen/README.md)
* [Markdown Parser](/src/markdown-reader/README.md)


## Services

* [ResponsiveService](/src/services/responsive/README.md)


## [Demo](https://rxdi.github.io/ui-components/)
npm package: @rxdi/ui-registry-client
Description: Use with `global` registry ```bash registry add './src/**/*.ts' --url https://ui-registry.graphql-server.com/upload ```
Author: Kristiyan Tachev
Latest version: 0.7.47



Use with `global` registry
```bash
registry add './src/**/*.ts' --url https://ui-registry.graphql-server.com/upload
```

Use with `private` registry
Defaults to `http://localhost:9000/upload`
```bash
registry add './src/**/*.ts'
```


Use with custom configuration registry
```bash
registry set \
'{"token":"083adcacfa9ea952e","registry":"https://ui-registry.graphql-server.com/upload"}'
```

This command will generate `config.json` inside `~/home/.rxdi/config.json` with content

```json
{
  "token": "083adcacfa9ea952e",
  "registry": "https://ui-registry.graphql-server.com/upload"
}
```

This configuration will be taken everytime `registry add` command is executed.