{"id":20109982,"url":"https://github.com/distributed-lab/web-kit","last_synced_at":"2025-08-01T09:40:22.007Z","repository":{"id":95714145,"uuid":"608312878","full_name":"distributed-lab/web-kit","owner":"distributed-lab","description":"TypeScript-based various types of solutions for Distributed Lab projects and not only.","archived":false,"fork":false,"pushed_at":"2024-09-26T13:17:35.000Z","size":8426,"stargazers_count":18,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-28T16:08:34.012Z","etag":null,"topics":["distributed-lab","front-end","js-sdk"],"latest_commit_sha":null,"homepage":"https://distributed-lab.github.io/web-kit","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/distributed-lab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-01T19:00:32.000Z","updated_at":"2024-09-26T13:15:45.000Z","dependencies_parsed_at":"2023-03-28T00:19:54.123Z","dependency_job_id":"f5ab3573-48c1-432e-9103-85ddec0cdda4","html_url":"https://github.com/distributed-lab/web-kit","commit_stats":{"total_commits":306,"total_committers":14,"mean_commits":"21.857142857142858","dds":0.5032679738562091,"last_synced_commit":"8a54a1063132f21f74dd543aff38750d2d33206f"},"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/distributed-lab/web-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/distributed-lab%2Fweb-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/distributed-lab%2Fweb-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/distributed-lab%2Fweb-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/distributed-lab%2Fweb-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/distributed-lab","download_url":"https://codeload.github.com/distributed-lab/web-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/distributed-lab%2Fweb-kit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267546101,"owners_count":24105134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed-lab","front-end","js-sdk"],"created_at":"2024-11-13T18:09:58.854Z","updated_at":"2025-08-01T09:40:21.985Z","avatar_url":"https://github.com/distributed-lab.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003e\u003cp align=\"center\"\u003e\u003cimg alt=\"Distributed Lab | Web-Kit\" src=\"https://raw.githubusercontent.com/distributed-lab/web-kit/main/assets/logo.png\" width=\"876\" /\u003e\u003c/p\u003e\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eTypeScript-based various types of solutions for \u003ca target=\"_blank\" rel=\"noopener\" href=\"https://distributedlab.com/\"\u003eDistributed Lab\u003c/a\u003e projects and not only.\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/distributed-lab/web-kit/blob/main/LICENSE\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/github/license/distributed-lab/web-kit.svg\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n## Table of Contents\n\n- [Changelog](#changelog)\n- [Packages](#packages)\n- [Using in the projects made by create-react-app](#using-in-the-projects-made-by-create-react-app)\n- [Development](#development)\n  * [Editors](#editors)\n    + [VSCode](#vscode)\n    + [WebStorm](#webstorm)\n  * [Dependencies](#dependencies)\n    + [Local dependencies](#local-dependencies)\n    + [Testing dependencies](#testing-dependencies)\n  * [Basics](#basics)\n    + [Build](#build)\n    + [Run tests](#run-tests)\n    + [Run linter](#run-linter)\n    + [Check release version](#check-release-version)\n- [Contribute](#contribute)\n  * [Reporting Issues](#reporting-issues)\n  * [Submitting pull requests](#submitting-pull-requests)\n- [License](#license)\n- [Resources](#resources)\n\n## Changelog\n\nFor the change log, see [CHANGELOG.md](https://github.com/distributed-lab/web-kit/blob/main/CHANGELOG.md).\n\n\n## Packages\n\nThe Distributed Lab Web-Kit is a library that consists of many smaller NPM packages within the\n[@distributedlab namespace](https://www.npmjs.com/org/distributedlab), a so-called monorepo.\n\nHere are the packages in the namespace:\n\n| Package                                                                                                         | Description                                                                       | Latest                                                                                                                                  |\n|-----------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|\n| [@distributedlab/reactivity](https://distributed-lab.github.io/web-kit/modules/_distributedlab_reactivity.html) | Implementation of the reactivity connections to propagate changes between objects | [![npm version](https://img.shields.io/npm/v/@distributedlab/reactivity.svg)](https://www.npmjs.com/package/@distributedlab/reactivity) |\n| [@distributedlab/jac](https://distributed-lab.github.io/web-kit/modules/_distributedlab_jac.html)               | A library for constructing JSON-API compliant requests and responses              | [![npm version](https://img.shields.io/npm/v/@distributedlab/jac.svg)](https://www.npmjs.com/package/@distributedlab/jac)               |\n| [@distributedlab/tools](https://distributed-lab.github.io/web-kit/modules/_distributedlab_tools.html)           | Collection of common utility functions and classes                                | [![npm version](https://img.shields.io/npm/v/@distributedlab/tools.svg)](https://www.npmjs.com/package/@distributedlab/tools)           |\n| [@distributedlab/fetcher](https://distributed-lab.github.io/web-kit/modules/_distributedlab_fetcher.html)       | Fetch API wrapper with the extended functionality and simple interface            | [![npm version](https://img.shields.io/npm/v/@distributedlab/fetcher.svg)](https://www.npmjs.com/package/@distributedlab/fetcher)       |\n| [@distributedlab/w3p](https://distributed-lab.github.io/web-kit/modules/_distributedlab_w3p.html)               | The wrapper for web3 providers                                                    | [![npm version](https://img.shields.io/npm/v/@distributedlab/w3p.svg)](https://www.npmjs.com/package/@distributedlab/w3p)               |\n\n## Using in the projects made by create-react-app\n\nTo use any of the packages in React project, created with [create-react-app](https://create-react-app.dev/) you need to add [craco](https://craco.js.org/) package and config to resolve the ESM version:\n\n```shell\nyarn add -D @craco/craco\n```\n\nNext, in the root of your project (where `package.json` is located) create a file named `craco.config.js` with the following content:\n\n```js\nmodule.exports = {\n  webpack: {\n    configure: {\n      module: {\n        rules: [\n          {\n            test: /\\.m?js$/,\n            resolve: {\n              fullySpecified: false,\n            },\n          },\n        ],\n      },\n    },\n  },\n}\n```\n\nThis config disables the breaking change that causes [this error](https://stackoverflow.com/questions/70964723/webpack-5-in-ceate-react-app-cant-resolve-not-fully-specified-routes).\n\nThen change the `start`/`build`/`test` commands in `package.json` replacing `react-scripts` to `craco`:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"craco start\",\n    \"build\": \"craco build\",\n    \"test\": \"craco test\"\n  }\n}\n```\n\n\n## Development\n\n### Editors\n\n#### VSCode\n\nTo get ESLint and Prettier working in VSCode, install [ESLint extension] and add the following to your settings.json:\n\n```json\n{\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": true\n  },\n  \"editor.formatOnSave\": true,\n  \"eslint.validate\": [\n    \"javascript\",\n    \"typescript\"\n  ],\n  \"eslint.alwaysShowStatus\": true,\n  \"eslint.packageManager\": \"yarn\",\n  \"eslint.workingDirectories\": [{ \"mode\": \"auto\" }]\n}\n```\n\n\n[ESLint extension]: https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint\n\n#### WebStorm\n\nTo get ESLint and Prettier working in WebStorm, go to `Preferences \u003e Languages \u0026 Frameworks \u003e JavaScript \u003e Code Quality Tools \u003e ESLint` and check the following:\n- `Run eslint --fix on save` enabled\n- `Automatic ESLint configuration` enabled\n- `{**/*,*}.{js,ts}` in `Run for files` field\n\n\n### Dependencies\n\n#### Local dependencies\n\nTo install all dependencies, run:\n```bash\nyarn install\n```\n\nIf you are implementing a new package which needs to depend on the local package, you can use the following command to install it:\n```bash\nyarn workspace @distributedlab/target-package add @distributedlab/package-to-add\n```\n\nTo install a dependency to all packages, use the following command:\n```bash\nyarn workspaces foreach -pt run add @distributedlab/package-to-add\n```\n\n#### Testing dependencies\n\nTo test the packages, you need:\n\n1. Build the packages:\n\n    ```bash\n    yarn build\n    ```\n2. Switch yarn to version berry in the project where you want to test package, to yarn be able to resolve workspace dependencies:\n\n    ```bash\n    yarn set version berry\n    ```\n3. Add this to the `.yarnrc.yml` file:\n\n    ```yaml\n    nodeLinker: node-modules\n    ```\n4. Link the packages to the project:\n\n    ```bash\n    yarn link -p -A /path/to/web-kit/root/directory\n    ```\n5. Add dependencies to the package.json file:\n\n    ```json\n    {\n      \"dependencies\": {\n        \"@distributedlab/jac\": \"*\"\n      }\n    }\n    ```\n\n6. Install the dependencies:\n    ```bash\n    yarn install\n    ```\n\n### Basics\n\n#### Build\n\n```bash\nyarn build\n```\n\n#### Run tests\n\n```bash\nyarn test\n```\n\n#### Run linter\n\n```bash\nyarn lint\n```\n\n#### Check release version\n\n```bash\nyarn rsc 0.1.0\n```\n\n#### Bump version for all packages\n\n```bash\nyarn apply-version 0.1.0\n```\n\n## Contribute\n\nFirst off, thanks for taking the time to contribute!\nNow, take a moment to be sure your contributions make sense to everyone else.\n\n### Reporting Issues\n\nFound a problem? Want a new feature? First of all see if your issue or idea has [already been reported](../../issues).\nIf don't, just open a [new clear and descriptive issue](../../issues/new).\n\n### Submitting pull requests\n\nPull requests are the greatest contributions, so be sure they are focused in scope, and do avoid unrelated commits.\n\n-   Fork it!\n-   Clone your fork: `git clone https://github.com/\u003cyour-username\u003e/web-kit`\n-   Navigate to the newly cloned directory: `cd web-kit`\n-   Create a new branch for the new feature: `git checkout -b feature/my-new-feature`\n-   Install the tools necessary for development: `yarn install`\n-   Make your changes.\n-   Commit your changes: `git commit -am 'Add some feature'`\n-   Push to the branch: `git push origin feature/my-new-feature`\n-   Submit a pull request with full remarks documenting your changes.\n\n## License\n\n[MIT License](https://opensource.org/licenses/MIT) © [Distributed Lab](https://distributedlab.com)\n\n## Resources\n- [Yarn Berry](https://yarnpkg.com/cli/install)\n- [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)\n- [Semantic Versioning](https://semver.org/spec/v2.0.0.html)\n- [Web-Kit TypeDoc](https://distributed-lab.github.io/web-kit)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdistributed-lab%2Fweb-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdistributed-lab%2Fweb-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdistributed-lab%2Fweb-kit/lists"}