{"id":19439342,"url":"https://github.com/codevendor/inferjs-library","last_synced_at":"2025-10-20T04:32:22.364Z","repository":{"id":82910567,"uuid":"605789570","full_name":"Codevendor/inferjs-library","owner":"Codevendor","description":"A runtime library that allows you to infer rules for extended type checking in JavaScript.","archived":false,"fork":false,"pushed_at":"2023-03-19T00:07:10.000Z","size":810,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-22T17:43:00.543Z","etag":null,"topics":["es6","esmodule","infer","infer-object","inferjs","inferjs-compiler","inferjs-library","inferobject","javascript","js","jsdoc","node","nodejs","type","typechecking","types"],"latest_commit_sha":null,"homepage":"https://inferjs.com","language":"JavaScript","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/Codevendor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-02-23T22:47:14.000Z","updated_at":"2023-04-11T16:14:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"9e54d93b-7b25-4865-be7a-2d244c13b8fd","html_url":"https://github.com/Codevendor/inferjs-library","commit_stats":{"total_commits":33,"total_committers":1,"mean_commits":33.0,"dds":0.0,"last_synced_commit":"adb85f1d2da76595bc92626305a38fae3fa7aa35"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codevendor%2Finferjs-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codevendor%2Finferjs-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codevendor%2Finferjs-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codevendor%2Finferjs-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Codevendor","download_url":"https://codeload.github.com/Codevendor/inferjs-library/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240619830,"owners_count":19830274,"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","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":["es6","esmodule","infer","infer-object","inferjs","inferjs-compiler","inferjs-library","inferobject","javascript","js","jsdoc","node","nodejs","type","typechecking","types"],"created_at":"2024-11-10T15:22:37.855Z","updated_at":"2025-10-20T04:32:17.325Z","avatar_url":"https://github.com/Codevendor.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[inferjs]: https://github.com/Codevendor/inferjs\n[inferjs-library]: https://github.com/Codevendor/inferjs-library\n[inferjs-compiler]: https://github.com/Codevendor/inferjs-compiler\n[infer-object]: https://github.com/Codevendor/inferjs-library\n[logo]: https://github.com/Codevendor/inferjs-library/blob/main/assets/images/inferjs-logo.png?raw=true\n[header]: https://github.com/Codevendor/inferjs-library/blob/main/assets/images/git_header.png?raw=true\n[arrow]: https://github.com/Codevendor/inferjs-library/blob/main/assets/images/arrowright.png?raw=true\n[library-docs]: https://github.com/Codevendor/inferjs-library/\n[library-issues]: https://github.com/Codevendor/inferjs-library/issues\n[compiler-docs]: https://github.com/Codevendor/inferjs-compiler/\n[compiler-issues]: https://github.com/Codevendor/inferjs-compiler/issues\n[unhandled-error]: https://github.com/Codevendor/inferjs-library/blob/main/src/errors/infer-unhandled-error.js\n[type-error]: https://github.com/Codevendor/inferjs-library/blob/main/src/errors/infer-type-error.js\n[expect-error]: https://github.com/Codevendor/inferjs-library/blob/main/src/errors/infer-expect-error.js \n[demo]:https://inferjs.com/demo.html\n\n\n![InferJS Library][header]\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Overview\n\n[**InferJS-Library**][inferjs-library] allows you to easily add runtime type checking by utilizing **JSDoc** multi-line comments in both client and server side **JavaScript**. The library is part of a bigger project named [**InferJS**][inferjs]. \n\n[**InferJS**][inferjs] is provided with an [**InferJS-Compiler**][inferjs-compiler]. The compiler interprets your **JSDoc** comments from your source code and compiles them into an [**InferObject**][infer-object] file, that you can import into any **JavaScript** file. \n\nWith this library, you can also enable extended type checking and narrow down your data types with `@infer` expectation rules. Check out the examples below, to see how [**InferJS**][inferjs] can save you time and money from costly bugs through development and release.\n\n- [Live Example][demo]\n\n\n### Built With\n\n* [JSDoc Version 3+](https://jsdoc.app/)\n* [Node.js Version 12+](https://nodejs.org/)\n* [NPM Version 5+](https://www.npmjs.com/)\n* [Webpack Version 5+](https://webpack.js.org/)\n* [Visual Studio Code](https://code.visualstudio.com/)\n\n\n\u003c!-- GETTING STARTED --\u003e\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Installation\n\nTo install the latest version of [**InferJS-Library**][inferjs-library] locally with `npm`:\n#### Install: [Locally]()\n```sh\nnpm install inferjs-library --save\n```\n\n#### Install: [Globally]()\n```sh\nnpm install -g inferjs-library\n```\n\n**_Optional_**: If you would like to download the repo source code with `git`:\n```sh\ngit clone https://github.com/Codevendor/inferjs-library.git\n```\n\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Browser Version Instructions\n\nIf you would like to use the [InferJS-Library] from the browser, please select a `precompiled/minified` version and module type from the `dist` folder. There are 3 types of modules supported (`esmodule`,`commonjs`,`script`). The `latest` folder contains the latest version of the library.  \n\n### _Optional_: Compiling the Latest Version of [InferJS-Library][inferjs-library]\nIf you are missing the `dist` folder or would like to compile the latest version, follow the steps below.\n\n#### Install Webpack\nTo build yourself, you will need to install **Webpack version 5+** with the following commands. The commands need to be run from where the `package.json` is located. Or you can install them globally with the `-g` identifier.\n\n#### Webpack Latest Install \n```sh\n// Local Install\nnpm install --save-dev webpack\nnpm install --save-dev webpack-cli\n\nor\n\n// Global Install\nnpm install -g --save-dev webpack\nnpm install -g --save-dev webpack-cli\n```\n\nThe latest version of **webpack 5+** automatically installs the **terser-webpack-plugin** with it. If it doesn't, you will need to install it as well, from where the `package.json` is located. The `Terser` plugin is used for `minimizing/compressing` the library code for use in the browser.\n\n#### _Optional_ - Terser Webpack Plugin \n- Required if webpack 4-\n```sh\nnpm install terser-webpack-plugin --save-dev\n```\n\nAfter the node modules under `devDependencies` are installed, you can run the build process from where the `package.json` is located.\n```sh\nnpm run build\n```\n\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Compiling InferObject Files \n\nIn order to use the [**InferJS-Library**][inferjs-library], you will need to compile an [**InferObject**][infer-object] with the [**InferJS-Compiler**][inferjs-compiler]. \n\nFor more information on installing the [**InferJS-Compiler**][inferjs-compiler] and its usage [click here][inferjs-compiler]. \n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Usage\n\n### Browser - Usage Instructions\nCopy one of the minimized `inferjs-{version}.min.js` from the `dist` folder to your website. Copy the pre-compiled [**InferObject**]() file to your website, that was created with the [**InferJS-Compiler**][inferjs-compiler]. \n\nAdd both to your webpage for type checking. You only need to recompile with the [**InferJS-Compiler**][inferjs-compiler], if you change your **JSDoc** multi-line comments, `@param`, `@type`, `@inferid` or `@infer` tags. \n\nBelow are examples for using [**InferJS-Library**][inferjs-library] in your code.\n\n#### Browser ESModule Import Example - Client side\n```html\n\u003cscript type=\"module\"\u003e\n  import { InferObject } from \"./inferobject.js\";\n  import { InferJS } from \"./esmodule/inferjs-{version}.min.js\";\n  const inferjs = new InferJS(InferObject);\n\u003c/script\u003e\n```\n\n#### Browser JavaScript Script Tag Sync Example - Client Side\n```html\n\u003cscript src=\"./inferobject.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"./script/inferjs-{version}.min.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\nconst inferjs = new InferJS(InferObject);\n\u003c/script\u003e\n```\n\n#### Node.js ESModule Import - Server Side\n```js\nimport { InferObject } from \"./inferobject.js\";\nimport { InferJS } from \"./esmodule/inferjs-{version}.min.js\";\nconst inferjs = new InferJS(InferObject);\n```\n\n#### Node.js CommonJS Require - Server Side\n```js\nconst InferObject = require(\"./inferobject.js\");\nconst InferJS = require(\"./commonjs/inferjs-{version}.min.js\");\nconst inferjs = new InferJS(InferObject);\n```\n\nThere are many ways to utilize the [**InferJS-Library**][inferjs-library]. The example above, imports in the pre-compiled [**InferObject**]() file that was created with the [**InferJS-Compiler**][inferjs-compiler]. Intialize the [**InferJS-Library**][inferjs-library] class with the [**InferObject**]() file you want to use.\n```js\n// Intialize through constructor\nconst inferjs = new InferJS(InferObject);\n\n// or intialize through property\nconst inferjs = new InferJS();\ninferjs.inferObject = InferObject;\n```\n\nOnce the [**InferJS-Library**][inferjs-library] and [**InferObject**]() file are included at the top of your file you can then utilize the type checking features. Below is an example of how to create a **JSDoc** multi-line comment for type checking.\n\n#### Custom JSDoc Multiline Comment with Custom Infer Expectations\n\n```js\n/**\n * Test case scenario for JavaScript inferjs function.\n * @category tests\n * @function foo\n * @param {string} msg - The message to send through console.log().\n * @param {(number|string)} id - The id of the message.\n * @param {boolean} [send=true] - Whether to send your message.\n * @infer {string} msg {STRING-NOT-EMPTY} - Checks if string is not empty.\n * @inferid foo\n */\nfunction foo(msg, id, send) {\n\n    inferjs.check('foo', arguments);\n}\n\n// Example Normal Call\nfoo('test', 1234, true);\n```\n\n\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Type Checking with JSDoc [@param]()\n\nThe **JSDoc** tag `@param` below specifies a method's parameter type(s), name and description.\n#### Fomart for [@param](): \n- **@param** {[_type_]()} paramName - _description_\n- **@param** {([_type_]()|[_type_]())} paramName - _description_\n\n##### Single type check example:\n```js\n/**\n * @param {string} msg - The message to send through console.log().\n */\n```\n\n##### Multi type check example:\n```js\n/**\n * @param {(null|string)} msg - The message to send through console.log().\n */\n```\n\n[**InferJS-Library**][inferjs-library] reads the precompiled [**InferObject**]() file \nand uses it to process all type checking and inferred expectations. \n\nBelow is a list of `standard` and `extended types` that can be checked:\n\n| Standard JS Types\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; | Description |\n| :-- | :-- |\n| [undefined]() | An undefined type: `undefined` |\n| [null]()   | A null type: `null` |\n| [boolean]()      |  A boolean type: `true` or `false` |\n| [number]() | A number type: `1000` or `10.25` |\n| [bigint]() | A big integer type: `1010101112233343545545545446n` |\n| [string]() | A string type: `foo1` or `foo2` |\n| [symbol]() | A symbol type: `Symbol` |\n| [function]() | A function type: `function` |\n| **Extended InferJS Types** | **Description** |\n| [any]() | Allows Any type: `any` or `*` |\n| [array]() | An array type: `[]` |\n| [infinity]() | An infinity number type: `Infinity` |\n| [nan]() | Not a number type: `NaN` |\n| [arguments]() | The arguments object: `arguments`. |\n| [\"_className_\"]() | A class name: `fooClass` |\n| [\"_functionName_\"]() | A function name: `fooFunction` |\n| [\"_errorName_\"]() | An error type: `Error` or `TypeError` or `errorName`  |\n\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Expectation Checking with Tag [@infer]()\n\n[**InferJS-Library**][inferjs-library] also allows for extended type checking with the custom `@infer` tag. Add one or multiple `@infer` tags to any parameter type. This will allow for narrowing your types down through expectations. \n\nBelow is an simple example of `@infer`:\n#### Fomart for [@infer](): \n- **@infer** {[_type_]()} paramName {[_expectation_]()} - _description_\n- **@infer** {([_type_]()|[_type_]())} paramName {([_expectation_]()|[_expectation_]())} - _description_\n\n```js\n/**\n * @infer {string} msg {STRING-NOT-EMPTY} - Checks if string is not empty.\n */\n```\n\nThe `@infer` tag is so versatile you can attach it to multiple types in a group and specify multiple narrowing and values to check against, like so:\n\n```js\n/**\n * @infer {(number|string)} msg {INT32|STRING-NOT-EMPTY} - Checks if string is not empty and is an integer32.\n * @infer {array} arrname {IN-ARRAY=a,b,c,d,e} - Checks if a,b,c,d is in array.\n * @infer {object} objname {PROPS=id,name} - Checks if objname has properties id and name.\n */\n```\n\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Tag [@infer]() Expectation Types\n\nThere are many extended expectation types for narrowing your types down with your `@infer` tags.\n\nBelow is a list of common rule expectation types:\n\n| Expectation\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; | Description |\n| :-- | :-- |\n| [STRING-NOT-EMPTY]() | Checks if a string is not empty. |\n| [STRING-EMPTY]() | Checks if a string is empty. |\n| [IS-BOOL]() | Checks if a string is a boolean, `true`, `false`, `yes`, `no`, `on`, `off`, `0`, `1`. |\n| [BETWEEN]() | Checks if number is between two numbers. |\n| [BETWEEN-INCLUSIVE]() | Checks if number is between two numbers and including equal to self. |\n| [BETWEEN-BIGINT]() | Checks if string is between two big integers. |\n| [BETWEEN-BIGINT-INCLUSIVE]() | Checks if a string is between two big integers including equal to self. |\n| [GREATER-THAN]() | Checks if value is greater than. |\n| [GREATER-THAN-EQUAL]() | Checks if value is greater than equal. |\n| [LESS-THAN]() | Checks if value is less than. |\n| [LESS-THAN-EQUAL]() | Checks if value is less than equal. |\n| [REGEX]() | Checks if matches a regular expression. |\n| [ALPHA]() | Checks if alpha characters. |\n| [IS-NUMBER]() | Checks if a string is a number. |\n| [IS-BIGINT]() | Checks if a string is a bigint. |\n| [IS-NUMERIC]() | Checks if a string is numeric. |\n| [ALPHA-NUMERIC]() | Checks if a string is alpha numeric. | \n| [IN-ARRAY-CI]() | Checks if in array list case insensitive. |\n| [IN-ARRAY]() | Checks if in array list case sensitive. |\n| [NOT-IN-ARRAY-CI]() | Checks if not in array list case insensitive. |\n| [NOT-IN-ARRAY]() | Checks if not in array list case sensitive. |\n| [EXTENDS-ALL]() | Checks if object extends all types. |\n| [EXTENDS]() | Checks if object extends type. |\n| [PROPS]() | Checks if object contains properties. |\n| [ARRAY-NOT-EMPTY]() | Checks if array not empty. |\n| [ARRAY-EMPTY]() | Checks if array is empty. |\n| [ARRAY-TYPES]() | Checks if array items of are of expected types. |\n| [INT8]() | Checks for INT8: `-128` to `127` |\n| [CHAR]() | ^ |\n| [UINT8]() | Checks for UINT8: `0` to `255` |\n| [UCHAR]() | ^ |\n| [UNSIGNED-CHAR]() | ^ |\n| [INT16]() | Checks for INT16: `-32768` to `32767` |\n| [SHORT]() | ^ |\n| [SHORT-INT]() | ^ |\n| [SIGNED-SHORT]() | ^ |\n| [UINT16]() | Check for UINT16: `0` to `65535` |\n| [UNSIGNED-SHORT]() | ^ |\n| [UNSIGNED-SHORT-INT]() | ^ |\n| [USHORT]() | ^ |\n| [INT32]() | Check for INT32: `-2147483648` to `2147483647` |\n| [SIGNED-INT]() | ^ |\n| [INT]() | ^ |\n| [UINT32]() | Check for UINT32: `0` to `4294967295` |\n| [UNSIGNED-INT]() | ^ |\n| [UINT]() | ^ |\n| [INT64]() | Check for INT64: `-9223372036854775808` to `9223372036854775807` |\n| [SIGNED-LONG]() | ^ |\n| [SIGNED-LONG-LONG]() | ^ |\n| [LONG]() | ^ |\n| [LONG-LONG]() | ^ |\n| [UINT64]() | Check for UINT64: `0` to `18446744073709551615` |\n| [UNSIGNED-LONG]() | ^ |\n| [UNSIGNED-LONG-LONG]() | ^ |\n| [ULONG]() | ^ |\n\n\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Linking with Tag [@inferid]()\n\nThe tag `@inferid` is a unique identifier for linking [**InferJS-Library**][inferjs-library] behind the scenes. It is required for each `method`, `property` or `field`, you would like to check. \n\nThis special tag, allows code to still work, while **JavaScript** is `compressed/minified` or `obfuscated`. All **Infers** are stored in a precompiled **InferObject** file. This makes it easy to write in your static data types and not have to worry about type checking them during **JavaScript Runtime** execution. \n\n`@inferid` can be anything you want as a name, but must be **unique** per item you want to check.\n\nBelow is an example of `@inferid`:\n#### Fomart for [@inferid](): \n- [@inferid]() _uniqueId_\n\n```js\n/**\n * @inferid foo\n */\n```\n\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Running InferJS Checks with Method [check()]()\n\nTo check all your types and expectations, you need to call the [**InferJS-Library**][inferjs-library] method `check()`. It needs to be added at the beginning of each method(s) starting closure or below each variable you would like to check.\n\nBelow is the overload signature for the method `check()`:\n| Method Signature for [**InferJS-Library**][inferjs-library]: check() |\n| :-- |\n| **check** (\u0026nbsp;inferId: [_@inferid_](),\u0026nbsp;\u0026nbsp;args: [_arguments_](),\u0026nbsp;\u0026nbsp;returnException: [_boolean =_]()`false`\u0026nbsp;) |\n| _Description_: Type checks all parameters in arguments list and either returns or throws exception.  |\n| **check** (\u0026nbsp;inferId: [_@inferid_](),\u0026nbsp;\u0026nbsp;arg: [_field_](),\u0026nbsp;\u0026nbsp;returnException: [_boolean =_]()`false`\u0026nbsp;) |\n| _Description_: Type checks single declared variables or fields. \n\n#### Example Check All Method Params:\n\n```js\nfunction foo(){\n  inferjs.check('Your - @inferid', arguments);\n}\n```\n\n#### Example Check Field or Variable:\n```js\nvar a = 'foo';\ninferjs.check('Your - @inferid', a);  \n```\n\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS Library: Type Checking Errors\n\nIn [**InferJS-Library**][inferjs-library] you have the option to throw or return `exception` from the `check()` method. Thrown errors come with tons of information for debugging your types and expectations. \n\n| Exception Types | Description |\n| :-- | :-- |\n| [InferUnhandledError][unhandled-error] | For all errors unhandled by the **InferJS** library. |\n| [InferTypeError][type-error] | For all type errors created from the **JSDoc** tag `@param` `{type}` |\n| [InferExpectError][expect-error] | For all errors related to the custom **JSDoc** tag `@infer` and custom expectation rules. |\n\nBelow are examples of exception type responses from [**InferJS-Library**][inferjs-library].  \n\n#### \u003e InferTypeError Example:\n```console\nInferTypeError: Incorrect third parameter type in:\nFile: /path/to/test1.js\nLine: 14\n@inferid: foo\n@function: ( msg: \u003cstring\u003e, id: \u003cnumber\u003e, objectTester: \u003cobject\u003e )\n@param: objectTester\nExpected Type: object\nActual Type: null\n```\n\n#### \u003e InferExpectError Example:\n```console\nInferExpectError: Incorrect first parameter, failed infer expectation type check in:\nFile: /path/to/test1.js\nLine: 14\n@inferid: foo\n@function: foo( msg: \u003cstring|number|null\u003e, id: \u003cnumber|string\u003e, send: \u003cboolean\u003e )\n@param: msg\nExpectation Type: STRING-NOT-EMPTY\nExpectation Value: \"1234\"\nArgument Value: \"\"\n```\n\n\n\n_For more examples, please refer to the [Documentation](https://inferjs.com)_\n\n\n\n\n\n\n\n\n\u003c!-- CONTRIBUTING --\u003e\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag `enhancement`.\nDon't forget to give the project a [⭐ star](), Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\n\n\n\n\u003c!-- LICENSE --\u003e\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: License\n\nDistributed under the **MIT** License. See `LICENSE.txt` for more information.\n\n\n\n\n\n\u003c!-- CONTACT --\u003e\n## ![Heading][arrow]\u0026nbsp;\u0026nbsp;InferJS-Library: Support Related\n - [**InferJS-Library** Documentation][library-docs] - Information documentation for the **InferJS-Library**.\n - [**InferJS-Library** Issues][library-issues] - Direct all questions about the **InferJS-Library**\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodevendor%2Finferjs-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodevendor%2Finferjs-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodevendor%2Finferjs-library/lists"}