open-index/open-npm huggingface dataset:
npm package: @isekaimaouyoki-sama/get-ip
Description: This package is an alternative solution to get ip in your computer
Author: isekaimaou1109
Latest version: 1.0.1

* # Đây là 1 giải pháp thay thế cho các modules internal-ip, public-ip, default-gateway bởi vì 3 modules đều không dùng được trong môi trường commonjs cho nên mình mới làm ra 1 cách để thay thế.

**Cách dùng**

```javascript
  const wrapper = require('./index')();

  /* lấy địa chỉ nội bộ của bạn */
  console.log("IP ver 4 nè => " + JSON.stringify(wrapper.getPrivateIp('4'), null, 2));

  /* lấy địa chỉ public của bạn */
  wrapper.getPublicIp('4').then(ip => {
    console.log("Địa chỉ public của bạn là " + JSON.stringify(ip, null, 2));
  }).catch(error => console.error("Mạng của bạn bị cá mập cắn rồi, troll tí :))"));

  /* kiểm tra xem đây có phải là IPv4 không */
  console.log("Có phải ip ver 4 không ta " + wrapper.isIPv4('176.12.1.6'));
  console.log("Có phải ip ver 4 không ta " + wrapper.isIPv4('2001:e3ac:4aac:23bd:12cd:eee2:311:23a3'));

  /* kiểm tra xem đây có phải là IPv6 không */
  console.log("Đây đích thị là ip version 6 à? " + wrapper.isIPv6('2001:e3ac:4aac:23bd:12cd:eee2:311:23a3'));

  /* lấy default gateway của 1 địa chỉ ip nào đó */
  wrapper.getDefaultGateway('192.168.1.5').then(gateway => {
    console.log("Địa chỉ cổng của con wifi nhà bạn là " + gateway);
  }).catch(error => console.error("Địa chỉ không hợp lệ hoặc chưa cấu hình cổng cho con wifi"));

  /* kiểm tra xem có phải địa chỉ mac hay không */
  console.log("Địa chỉ mac hả ta " + wrapper.isMacaddress('3e:2a:ab:a2:1b:c2'));
```

**Output**

```
IP ver 4 nè => {
  "family": "IPv4",
  "address": "192.168.1.5/24",
  "macaddress": "c4:e9:84:d8:77:53",
  "protocolVersion": "IPv4"
}
Địa chỉ public của bạn là "14.230.235.200"
Có phải ip ver 4 không ta true
Có phải ip ver 4 không ta false
Đây đích thị là ip version 6 à? true
Địa chỉ cổng của con wifi nhà bạn là 192.168.1.1
Địa chỉ mac hả ta true
```
> Và trên đó chính là cách dùng và đầu ra của từng chức năng. Nếu có bất kì vấn đề nào thì cứ post issue lên nha mọi người.
npm package: @iselect/select
Description: Build and deploy apps for web, desktop, and mobile from a single codebase
Author: Select
Latest version: 1.0.4

# Select CLI

Build and deploy apps for web, desktop, and mobile from a single codebase.

```
   _____ ________    _______________
  / ___// ____/ /   / ____/ ____/_  /
  \__ \/ __/ / /   / __/ / /     / / 
 ___/ / /___/ /___/ /___/ /___  / /  
/____/_____/_____/_____/\____/ /_/   
```

## Installation

```bash
# Option 1: From Source (Recommended for Contributors)
git clone https://github.com/yourusername/select-cli.git
cd select-cli
npm link

# Option 2: From GitHub (If public)
npm install -g github:yourusername/select-cli
```

## Quick Start

```bash
# Create a new project
slct init my-app

# Navigate to project
cd my-app

```bash
# Select target platforms
slct

# Build for all desktop platforms & web
slct build all

# Deploy to Select marketplace
slct deploy
```

## Commands

### `slct init [name]`

Create a new Select project with interactive prompts.

```bash
slct init my-app
slct init --template vue
```

**Options:**
- `-t, --template <template>` - Project template (react, vue, vanilla)

### `slct` (or `slct s`)

Interactively select target platforms for your project.

### `slct build [target]`

Build your app for specified platforms.

```bash
slct build              # Interactive selection
slct build web          # Build for web only
slct build desktop      # Build for desktop (Tauri/Electron)
slct build all          # Build for all platforms (Web + Desktop)
```

**Options:**
- `--tauri` - Use Tauri for desktop (default)
- `--electron` - Use Electron for desktop
- `--release` - Build for production release

### `slct deploy`

Deploy your app to the Select marketplace.

```bash
slct deploy
slct deploy --prod      # Deploy to production
```

### `slct dev`

Start the development server.

```bash
slct dev
slct dev --port 3000
```

## select.json

Configuration file generated by `slct init`:

```json
{
  "name": "my-app",
  "version": "1.0.0",
  "description": "A Select app",
  "platforms": ["web", "windows", "linux"],
  "desktop": {
    "framework": "tauri"
  },
  "build": {
    "command": "npm run build",
    "devCommand": "npm run dev",
    "outDir": "dist"
  }
}
```

## Platform Requirements

### Tauri (Desktop)

Tauri requires Rust and platform-specific build tools:

1. **Install Rust**: https://rustup.rs/
2. **Windows**: Install Visual Studio Build Tools
   - MSVC v143 - VS 2022 C++ x64/x86 build tools
   - Windows 10/11 SDK
   - C++ CMake tools
3. **macOS**: Install Xcode Command Line Tools
4. **Linux**: Install build-essential and webkit2gtk

### Electron (Desktop)

Electron is automatically installed when selected.

## License

MIT
npm package: @isener/y-quill
Description: QuillJs bindings for Yjs
Author: Kevin Jahns
Latest version: 0.1.8

# y-quill

> [Quill Editor](https://quilljs.com/) binding for [Yjs](https://github.com/y-js/yjs) - [Demo](https://demos.yjs.dev/quill/quill.html)

This binding maps a Y.Text to a Quill instance. It optionally supports shared cursors via
the [quill-cursors](https://github.com/reedsy/quill-cursors) module.

## Example

```js
import { QuillBinding } from 'y-quill'
import Quill from 'quill'
import QuillCursors from 'quill-cursors'

..

Quill.register('modules/cursors', QuillCursors)

const type = ydoc.getText('quill')

var editor = new Quill('#editor-container', {
  modules: {
    cursors: true,
    toolbar: [
      [{ header: [1, 2, false] }],
      ['bold', 'italic', 'underline'],
      ['image', 'code-block']
    ]
  },
  placeholder: 'Start collaborating...',
  theme: 'snow' // or 'bubble'
})

// Optionally specify an Awareness instance, if supported by the Provider
const binding = new QuillBinding(type, editor, provider.awareness)

/*
// Define user name and user name
// Check the quill-cursors package on how to change the way cursors are rendered
provider.awareness.setLocalStateField('user', {
  name: 'Typing Jimmy',
  color: 'blue'
})
*/

```

Also look [here](https://github.com/y-js/yjs-demos/tree/master/quill) for a working example.

## License

[The MIT License](./LICENSE) © Kevin Jahns
npm package: @isense-development/administration
Description: Administration package
Author: Hemelaers Jan
Latest version: 2.0.4

# Administration module

This module expands the current application where all settings, users and configs ect are kept and can be managed.

## Installation

`npm i @isense-development/administration`

Add the package to the `env.json file`

```json
{
    "app": {
        "packages": [
            {"name": "administration"}
        ]
    }
}
```

## Version Compatibility

| Quasar                      | @isense-development/administration                            |
|:-----------------------------|:--------------------------------------|
| ![Quasar v2.x][quasar_2_x] | ![@isense-development/administration v2.x][@isense-development/administration_2_x]     |

[quasar_2_x]:  https://img.shields.io/badge/version-2.x-blue

[@isense-development/administration_2_x]:   https://img.shields.io/badge/version-2.x-blue

## Auto generated alias

In the `quasar.conf.json` the alias is automatically created '~administration' based on the module name in the `env.json` file

## Register the routes

You need to register the routes in the `src/router/routes.js` file and assign them to which layout you want to use them

```js
/* Add here the packages that have included routes */
import administration from '~administration';

/* push your package routes to the router
 The layout refers to which parent you want to add the routes as children
 */
packageRoutes.push({ name: 'administration', package: administration.router, layout: 'main-layout' });
```

## How update packages?

[4 Safe Steps to Update npm Packages](https://josipmisko.com/posts/how-to-update-npm-packages-in-4-easy-steps)

Cheat Sheet: 6 Commands To Help You Update npm Packages

This cheat sheet will make it easy to safely update npm packages in your node application. It includes a list of commands that will help you keep up with the latest updates and avoid breaking changes.

* Use `npm list` --depth 0 to list all the packages in your package directory
* Use `npm audit` to find out which of your npm dependencies are vulnerable.
* Use `npm outdated` to list the packages that are out of date with respect to what is installed in package.json
* Use `npm update package_name` to update an individual package that has already been installed.
* Use `npm uninstall package_name` and npm install package_name@version to revert to a specific version.
* Use `npm cache clean --force` to clear npm's cache of all the packages that have been installed.
npm package: @isense-development/auth
Description: Auth package
Author: Hemelaers Jan
Latest version: 2.0.4

# Authentication module

This module manages the login, logout and change password functions

## Installation

`npm i @isense-development/auth`

Add the package to the `env.json file`

```json
{
    "app": {
        "packages": [
            {"name": "auth"}
        ]
    }
}
```

## Version Compatibility

| Quasar                      | @isense-development/auth                            |
|:-----------------------------|:--------------------------------------|
| ![Quasar v2.x][quasar_2_x] | ![@isense-development/auth v2.x][@isense-development/auth_2_x]     |

[quasar_2_x]:  https://img.shields.io/badge/version-2.x-blue

[@isense-development/auth_2_x]:   https://img.shields.io/badge/version-2.x-blue

## Auto generated alias

In the `quasar.conf.json` the alias is automatically created '~auth' based on the module name in the `env.json` file

## Register the routes

You need to register the routes in the `src/router/routes.js` file and assign them to which layout you want to use them

```js
/* Add here the packages that have included routes */
import auth from '~auth';

/* push your package routes to the router
 The layout refers to which parent you want to add the routes as children
 */
packageRoutes.push({ name: 'auth', package: auth.router, layout: 'root' });
```

## Register the store

You need to register the store in the `src/router/package-stores.js` file

```js
import auth from '~auth';

let stores = {
    auth: auth.store,
}
```

## How update packages?

[4 Safe Steps to Update npm Packages](https://josipmisko.com/posts/how-to-update-npm-packages-in-4-easy-steps)

Cheat Sheet: 6 Commands To Help You Update npm Packages

This cheat sheet will make it easy to safely update npm packages in your node application. It includes a list of commands that will help you keep up with the latest updates and avoid breaking changes.

* Use `npm list` --depth 0 to list all the packages in your package directory
* Use `npm audit` to find out which of your npm dependencies are vulnerable.
* Use `npm outdated` to list the packages that are out of date with respect to what is installed in package.json
* Use `npm update package_name` to update an individual package that has already been installed.
* Use `npm uninstall package_name` and npm install package_name@version to revert to a specific version.
* Use `npm cache clean --force` to clear npm's cache of all the packages that have been installed.
npm package: @isense-development/file-upload
Description: File upload module
Author: Hemelaers Jan
Latest version: 2.0.4

# File upload module

This module give you a ready to use uploader for single documents, pictures or files.

## Installation

`npm i @isense-development/file-upload`

## Version Compatibility

| Quasar                      | @isense-development/file-upload                            |
|:-----------------------------|:--------------------------------------|
| ![Quasar v2.x][quasar_2_x] | ![@isense-development/file-upload v2.x][@isense-development/file-upload_2_x]     |

[quasar_2_x]:  https://img.shields.io/badge/version-2.x-blue

[@isense-development/file-upload_2_x]:   https://img.shields.io/badge/version-2.x-blue

## Auto generated alias

In the `quasar.conf.json` the alias is automatically created '~file-upload' based on the module name in the `env.json` file

## Usage

```vue

<template>
  <div id="app">
    <file-upload :url="url"/>
  </div>
</template>

<script>
import { defineComponent, ref } from 'vue'
import FileUpload from '~file-upload/file-upload'

export default defineComponent({
  name      : '',
  components: { FileUpload },
  setup() {
    const url = ref('https://localhost:8000/upload')

    return {
      url
    }
  }
})
</script>
```

## Prop Types

| Property  | Type   | Description  |
|-----------|--------|--------------|
| url       | string | "api/upload" |

## How update packages?

[4 Safe Steps to Update npm Packages](https://josipmisko.com/posts/how-to-update-npm-packages-in-4-easy-steps)

Cheat Sheet: 6 Commands To Help You Update npm Packages

This cheat sheet will make it easy to safely update npm packages in your node application. It includes a list of commands that will help you keep up with the latest updates and avoid breaking changes.

* Use `npm list` --depth 0 to list all the packages in your package directory
* Use `npm audit` to find out which of your npm dependencies are vulnerable.
* Use `npm outdated` to list the packages that are out of date with respect to what is installed in package.json
* Use `npm update package_name` to update an individual package that has already been installed.
* Use `npm uninstall package_name` and npm install package_name@version to revert to a specific version.
* Use `npm cache clean --force` to clear npm's cache of all the packages that have been installed.
npm package: @isense-development/navigator
Description: navigator package
Author: Hemelaers Jan
Latest version: 2.0.2

# File upload module

This module give you a ready to use uploader for single documents, pictures or files.

## Installation

`npm i @isense-development/navigator`

## Version Compatibility

| Quasar                      | @isense-development/navigator                            |
|:-----------------------------|:--------------------------------------|
| ![Quasar v2.x][quasar_2_x] | ![@isense-development/navigator v2.x][@isense-development/navigator_2_x]     |

[quasar_2_x]:  https://img.shields.io/badge/version-2.x-blue

[@isense-development/navigator_2_x]:   https://img.shields.io/badge/version-2.x-blue

## Auto generated alias

In the `quasar.conf.json` the alias is automatically created '~navigator' based on the module name in the `env.json` file

## Usage

### Geolocation

```vue
<template>
  <div>
    <q-badge color="positive">latitude - longitude: {{ location.coords.latitude }}, {{ location.coords.longitude }}</q-badge>
    <q-badge color="positive">accuracy: {{ location.coords.accuracy }} meters</q-badge>
  </div>
</template>
<script>
import useGeoLocation from '~navigator/geolocation'

export default defineComponent({
	name      : '',
	setup     : () => {
        const { location, getPosition, watchPosition } = useGeoLocation();

      getPosition()
      watchPosition()
      
		return {
			location,
		}
	}
})
</script>
```

### Connection

```vue
<template>
  <div>
    <q-badge>Downlink: {{ connectionState.downlink }} Mb/s - RTT: {{ connectionState.rtt }} Ms</q-badge>
  </div>
</template>
<script>

import useConnection from '~navigator/connection'
export default defineComponent({
  name      : '',
  setup     : () => {
    const { connectionState } = useConnection();
    
    useConnection()

    return {
      connectionState
    }
  }
})
</script>
```

## How update packages?

[4 Safe Steps to Update npm Packages](https://josipmisko.com/posts/how-to-update-npm-packages-in-4-easy-steps)

Cheat Sheet: 6 Commands To Help You Update npm Packages

This cheat sheet will make it easy to safely update npm packages in your node application. It includes a list of commands that will help you keep up with the latest updates and avoid breaking changes.

* Use `npm list` --depth 0 to list all the packages in your package directory
* Use `npm audit` to find out which of your npm dependencies are vulnerable.
* Use `npm outdated` to list the packages that are out of date with respect to what is installed in package.json
* Use `npm update package_name` to update an individual package that has already been installed.
* Use `npm uninstall package_name` and npm install package_name@version to revert to a specific version.
* Use `npm cache clean --force` to clear npm's cache of all the packages that have been installed.
npm package: @isense-development/offline-requests
Description: Offline-requests module
Author: Hemelaers Jan
Latest version: 2.0.3

# Offline request processing module

With this module you can handle offline requests storage to sync when you are back online

## Installation

`npm i @isense-development/offline-requests`

Add the package to the `env.json file`

```json
{
    "app": {
        "packages": [
            {"name": "offline-requests"}
        ]
    }
}
```

## Version Compatibility

| Quasar                      | @isense-development/offline-requests                            |
|:-----------------------------|:--------------------------------------|
| ![Quasar v2.x][quasar_2_x] | ![@isense-development/offline-requests v2.x][@isense-development/offline-requests_2_x]     |

[quasar_2_x]:  https://img.shields.io/badge/version-2.x-blue

[@isense-development/offline-requests_2_x]:   https://img.shields.io/badge/version-2.x-blue

## Auto generated alias

In the `quasar.conf.json` the alias is automatically created '~offline-requests' based on the module name in the `env.json` file

## Register the store

You need to register the store in the `src/store/package-stores.js` file

```js
import offlineRequests from '~offline-requests';

let stores = {
    offlineRequests: offlineRequests.store,
}
```

## Usage

```vue

<template>
  <div id="app">
    <btn-offline-sync-requests/>
  </div>
</template>

<script>
import { defineComponent } from 'vue'
import BtnOfflineSyncRequests from '~offline-requests/components/btn-offline-sync-requests'

export default defineComponent({
  name      : 'main-header',
  components: { BtnOfflineSyncRequests }
})
</script>
```

## How update packages?

[4 Safe Steps to Update npm Packages](https://josipmisko.com/posts/how-to-update-npm-packages-in-4-easy-steps)

Cheat Sheet: 6 Commands To Help You Update npm Packages

This cheat sheet will make it easy to safely update npm packages in your node application. It includes a list of commands that will help you keep up with the latest updates and avoid breaking changes.

* Use `npm list` --depth 0 to list all the packages in your package directory
* Use `npm audit` to find out which of your npm dependencies are vulnerable.
* Use `npm outdated` to list the packages that are out of date with respect to what is installed in package.json
* Use `npm update package_name` to update an individual package that has already been installed.
* Use `npm uninstall package_name` and npm install package_name@version to revert to a specific version.
* Use `npm cache clean --force` to clear npm's cache of all the packages that have been installed.
npm package: @isense-development/page-loader
Description: page-loader package
Author: Hemelaers Jan
Latest version: 2.0.1

# File upload module

This module give you a ready to use uploader for single documents, pictures or files.

## Installation

`npm i @isense-development/page-loader`

## Version Compatibility

| Quasar                      | @isense-development/page-loader                            |
|:-----------------------------|:--------------------------------------|
| ![Quasar v2.x][quasar_2_x] | ![@isense-development/page-loader v2.x][@isense-development/page-loader_2_x]     |

[quasar_2_x]:  https://img.shields.io/badge/version-2.x-blue

[@isense-development/page-loader_2_x]:   https://img.shields.io/badge/version-2.x-blue

## Auto generated alias

In the `quasar.conf.json` the alias is automatically created '~page-loader' based on the module name in the `env.json` file

## Usage

```vue
<q-page
    v-show="isInitialLoadDone">
</q-page>

<script>
import pageLoader from '~page-loader/pageLoader'
import axiosWrapper from '~axios-wrapper/axiosWrapper'

export default defineComponent({
  name      : '',
  setup     : () => {
    const {} = pageLoader()
    const { isInitialLoadDone } = axiosWrapper()

    return {
      isInitialLoadDone
    }
  }
});
</script>
```

::: tip 
Be also sure to import the pageLoader!!
In the routes you need to set the disableLoader to `false` if you would like to use it on that page
:::


```js
{
    path     : 'dashboard',
    name     : 'dashboard',
    meta     : {
        requiresAuth : true,
        disableLoader: false,
        uuid         : 'E73A0052-2ABB-481E-B8DE-A8F80AE49199'
    },
    component: () => import(/* webpackChunkName: "dashboard" */ 'pages/dashboard/views')
},
```

## How update packages?

[4 Safe Steps to Update npm Packages](https://josipmisko.com/posts/how-to-update-npm-packages-in-4-easy-steps)

Cheat Sheet: 6 Commands To Help You Update npm Packages

This cheat sheet will make it easy to safely update npm packages in your node application. It includes a list of commands that will help you keep up with the latest updates and avoid breaking changes.

* Use `npm list` --depth 0 to list all the packages in your package directory
* Use `npm audit` to find out which of your npm dependencies are vulnerable.
* Use `npm outdated` to list the packages that are out of date with respect to what is installed in package.json
* Use `npm update package_name` to update an individual package that has already been installed.
* Use `npm uninstall package_name` and npm install package_name@version to revert to a specific version.
* Use `npm cache clean --force` to clear npm's cache of all the packages that have been installed.
npm package: @isentinel/dict-rbxts
Description: Roblox-TS dictionary for CSpell
Author: Christopher Buss
Latest version: 1.0.4

# CSpell roblox-ts Dictionary

Roblox-TS dictionary for CSpell

This is a pre-built dictionary for use with CSpell.

## Installation

Global Install and add to CSpell global settings.

```sh
npm install -g @isentinel/dict-rbxts
cspell link add @isentinel/dict-rbxts
```

## Uninstall from CSpell

```sh
cspell link remove @isentinel/dict-rbxts
```

## Manual Installation

Manual installation is useful if you want to include this dictionary as part of
your CI/CD lint process.

```sh
npm i @isentinel/dict-rbxts
```

The `cspell-ext.json` file in this package should be added to the import section
in your `cspell.json` file.

```jsonc
{
	// …
	"import": ["@isentinel/dict-rbxts/cspell-ext.json"],
	// …
}
```

## Dictionary Development

See:
[How to Create a New Dictionary](https://github.com/streetsidesoftware/cspell-dicts#how-to-create-a-new-dictionary)

## License

MIT

> Some packages may have other licenses included.

<!--- @@inject: ../../static/footer.md --->

<br/>

***

<p align="center">
Brought to you by Christopher Buss & <a href="https://streetsidesoftware.com" title="Street Side Software">
<img width="16" alt="Street Side Software Logo" src="https://i.imgur.com/CyduuVY.png" /> Street Side Software
</a>
</p>

<!--- @@inject-end: ../../static/footer.md --->
npm package: @isentinel/dict-roblox
Description: Roblox API Dictionary for CSpell.
Author: Christopher Buss
Latest version: 1.0.4

# CSpell Roblox Dictionary

Roblox dictionary for CSpell.

This is a pre-built dictionary for use with CSpell.

## Requirements

| Tool                                                                                                                                 | Version |
| ------------------------------------------------------------------------------------------------------------------------------------ | ------- |
| [cspell](https://github.com/streetsidesoftware/cspell)                                                                               | `>= 6`  |
| [Code Spell Checker - Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) | `>= 2`  |

## Installation

Global Install and add to cspell global settings.

```sh
pnpm install -g @isentinel/dict-roblox
cspell link add @isentinel/dict-roblox
```

## Uninstall from cspell

```sh
cspell link remove @isentinel/dict-roblox
```

## Manual Installation

The `cspell-ext.json` file in this package should be added to the import section
in your cspell.json file.

```json
{
	// …
	"import": ["@isentinel/dict-roblox/cspell-ext.json"]
	// …
}
```

## Building

Building is only necessary if you want to modify the contents of the dictionary.
Note: Building will take a few minutes for large files.

```sh
pnpm run build
```

## License

MIT

> Some packages may have other licenses included.

<!--- @@inject: ../../static/footer.md --->

<br/>

***

<p align="center">
Brought to you by Christopher Buss & <a href="https://streetsidesoftware.com" title="Street Side Software">
<img width="16" alt="Street Side Software Logo" src="https://i.imgur.com/CyduuVY.png" /> Street Side Software
</a>
</p>

<!--- @@inject-end: ../../static/footer.md --->
npm package: @isentinel/dict-wally
Description: Wally package manager dictionary for CSpell
Author: Christopher Buss
Latest version: 1.0.3

# CSpell Wally Dictionary

Wally package manager dictionary for CSpell

This is a pre-built dictionary for use with CSpell.

## Installation

Global Install and add to CSpell global settings.

```sh
npm install -g @isentinel/dict-wally
cspell link add @isentinel/dict-wally
```

## Uninstall from CSpell

```sh
cspell link remove @isentinel/dict-wally
```

## Manual Installation

Manual installation is useful if you want to include this dictionary as part of
your CI/CD lint process.

```sh
npm i @isentinel/dict-wally
```

The `cspell-ext.json` file in this package should be added to the import section
in your `cspell.json` file.

```jsonc
{
	// …
	"import": ["@isentinel/dict-wally/cspell-ext.json"],
	// …
}
```

## Dictionary Development

See:
[How to Create a New Dictionary](https://github.com/streetsidesoftware/cspell-dicts#how-to-create-a-new-dictionary)

## License

MIT

> Some packages may have other licenses included.

<!--- @@inject: ../../static/footer.md --->

<br/>

***

<p align="center">
Brought to you by Christopher Buss & <a href="https://streetsidesoftware.com" title="Street Side Software">
<img width="16" alt="Street Side Software Logo" src="https://i.imgur.com/CyduuVY.png" /> Street Side Software
</a>
</p>

<!--- @@inject-end: ../../static/footer.md --->
npm package: @isentinel/ts-expose-internals
Description: Augment the TypeScript compiler module's types to expose hidden internal types
Author: Ron Spickenagel
Latest version: 5.9.3

[![License](https://img.shields.io/npm/l/ts-expose-internals)](https://opensource.org/licenses/MIT)

# TypeScript Internal Types

Expose TypeScript internal types by simply adding a development dependency.

## Setup

1. Add aliased dependency to package.json (use the same version as your typescript version)

   ```jsonc
   {
     "devDependencies": {
       "typescript": "^5.1.3",
       // Note: The package is 'ts-expose-internals', but we are aliasing within the @types scope to make TS adopt it globally
       "@types/ts-expose-internals": "npm:ts-expose-internals@5.1.3"
     }
   }
   ```

2. Run `npm install` / `yarn install`

## Usage
All internal types are now available within the primary typescript module
```ts
// This namespace is flagged @internal and is omitted from published types, but now we can access it!
import { JsDoc } from 'typescript'
```

## How It Works

The code within this repo runs on a schedule of once per day via GitHub Actions.

It checks for new TypeScript release tags, and if there are any, it clones the source code for that release and
builds the internal types. After, it performs a bit of transformation magic and publishes the package to NPM.

New types are added to the 'typescript' module via the 
[Module Augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation) technique.

## Notes

- We publish for full TS releases only. If you'd like nightly builds, have a look at [byots](https://github.com/basarat/byots).
- If we don't have a package for the latest release, please allow 24hrs, then file an issue.

## Acknowledgments

Thanks to [basarat](https://github.com/basarat) for his work on [byots](https://github.com/basarat/byots), which served
as the inspiration!
npm package: @isentinel/tsconfig
Description: TypeScript shareable config
Author: Christopher Buss
Latest version: 1.2.0

# TypeScript Config

<img
  src="./assets/logo.svg"
  alt="TypeScript Config Logo"
  align="right"
  width="160"
  height="160"
/>

[![Version](https://img.shields.io/npm/v/@isentinel/tsconfig.svg?color=fff&labelColor=007acc)](https://npmjs.com/package/@isentinel/tsconfig)
[![GitHub License](https://img.shields.io/badge/license-MIT-232428.svg?color=fff&labelColor=007acc)](https://github.com/christopher-buss/tsconfig/blob/main/LICENSE.md)

A comprehensive and strict TypeScript configuration that enforces modern,
type-safe development practices. Seamlessly implement robust typing standards
across projects by utilizing cutting-edge TypeScript features and safety checks.

This config delivers a future-ready TypeScript setup through multiple optimized
configurations, ensuring maximum type safety and compatibility with modern
JavaScript runtimes and Roblox development environments.

## Installation

1. Install package:

```sh
pnpm add --save-dev typescript @isentinel/tsconfig
```

2. Create TypeScript configuration file `tsconfig.json` in the root of your
   project, choosing the appropriate configuration:

For standard TypeScript projects:

```json
{
	"extends": "@isentinel/tsconfig/typescript"
}
```

For Roblox projects:

```json
{
	"extends": "@isentinel/tsconfig/roblox"
}
```

## See also

- [`@isentinel/eslint-config`](https://github.com/christopher-buss/eslint-config)
- Original project:
  [`@azat-io/typescript-config`](https://github.com/azat-io/typescript-config)

## License

MIT &copy; [Christopher Buss](https://github.com/christopher-buss)

Original work &copy; [Azat S.](https://azat.io)
npm package: @isentropic/dim-quantity
Description: Define quantity systems for compile-time dimensional analysis
Latest version: 0.5.0

# @isentropic/dim-quantity

Define quantity systems for compile-time dimensional analysis.

> Looking for standard ISQ quantities? See
> [`@isentropic/dim-isq`](https://github.com/isentropic-dev/dim/blob/main/packages/dim-isq/README.md).

## Usage

### Spec-based

The preferred approach for any non-trivial system. Define a spec, generate typed
factories, and use them.

```typescript
// quantities.spec.ts
import { defineQuantitySpec } from "@isentropic/dim-quantity/generate";

export default defineQuantitySpec({
  name: "physics",
  dims: ["L", "T"],
  quantities: {
    base: {
      length: "L",
      time: "T",
    },
    derived: {
      velocity: { L: 1, T: -1 },
      area: { L: 2 },
    },
  },
});
```

Generate the code:

```bash
deno run -RW jsr:@isentropic/dim-quantity/generate \
  --spec ./quantities.spec.ts \
  --out ./quantities.generated.ts
```

Use the generated factories:

```typescript
import { area, length, time, velocity } from "./quantities.generated.ts";
import { add, divide, multiply } from "@isentropic/dim-quantity/ops";

const distance = length(100);
const duration = time(10);

const speed = divide(distance, duration);
const surface = multiply(length(5), length(5));
const total = add(length(50), length(30));

// Dimension mismatches are compile errors
// add(length(10), time(5));     // Can't add length and time
```

> For Node/Bun, use `generateQuantitySystem()` programmatically:
>
> ```typescript
> import { generateQuantitySystem } from "@isentropic/dim-quantity/generate";
> import { writeFileSync } from "node:fs";
> import spec from "./quantities.spec.ts";
>
> writeFileSync("./quantities.generated.ts", generateQuantitySystem(spec));
> ```

### Code-based

For small, one-off quantity systems where code generation isn't worth the
overhead:

```typescript
import { defineQuantitySystem } from "@isentropic/dim-quantity";
import { add, divide } from "@isentropic/dim-quantity/ops";
import type { DimOf } from "@isentropic/dim-quantity";

const qs = defineQuantitySystem(["L", "T"]);

const length = qs.base("L");
const time = qs.base("T");
const velocity = qs.factory({ L: 1, T: -1 });

// Extract dimension types from factory functions
type Length = DimOf<typeof length>;
type Velocity = DimOf<typeof velocity>;

const distance = length(100);
const duration = time(10);
const speed = divide(distance, duration);

// Dimension mismatches are compile errors
// add(distance, duration);     // Can't add length and time
```

## Installation

```bash
# Deno
deno add jsr:@isentropic/dim-quantity
# npm
npm install @isentropic/dim-quantity
# Bun
bun add @isentropic/dim-quantity
```

## License

MIT
npm package: @isephix/tokenshield
Description: Secure API token management for frontend JavaScript
Author: Yannick Scholich
Latest version: 1.0.0

# Token Proxy

A minimal, dependency-free library for secure API token management in frontend JavaScript.

## Features

- Two independent approaches:
  1. Server Proxy: Maximum compatibility and control
  2. Service Worker: Serverless solution
- No external dependencies
- TypeScript support
- Simple API

## Installation

```bash
npm install tokenshield
```

## Usage

### Server Proxy

```typescript
// Server-side
import { ProxyServer } from 'tokenshield';

const server = new ProxyServer();
server.listen(3000);

// Client-side
const registerToken = async (token) => {
  const response = await fetch('http://localhost:3000/token', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ token })
  });
  return response.json();
};

const getTempToken = async (id) => {
  const response = await fetch('http://localhost:3000/temp', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ id })
  });
  return response.json();
};

// Usage
const { id } = await registerToken('your-api-token');
const { token } = await getTempToken(id);

// Make API requests
fetch('https://api.example.com/data', {
  headers: { 'x-temp-token': token }
});
```

### Service Worker

```typescript
import { ServiceWorkerProxy } from 'tokenshield';

const proxy = new ServiceWorkerProxy();
await proxy.register();
await proxy.setToken('your-api-token');

// Use regular fetch - SW will intercept
const data = await fetch('https://api.example.com/data');
```

## API Documentation

### ProxyServer

- `constructor(options?: TokenProxyOptions)`
- `listen(port: number = 3000): void`

### ServiceWorkerProxy

- `constructor(options?: { swPath?: string })`
- `register(): Promise<ServiceWorkerRegistration>`
- `setToken(token: string, id?: string): Promise<void>`
- `fetch(url: string, options?: RequestInit): Promise<Response>`

## License

MIT