open-index/open-npm huggingface dataset:
npm package: @abranhe/codewars
Description: My answers to Codewars challenges
Author: Abraham Hernandez
Latest version: 0.0.1

# Codewars [![Build Status](https://travis-ci.com/abranhe/codewars.svg?branch=master)](https://travis-ci.com/abranhe/codewars)

[<img src="https://www.codewars.com/assets/logos/logo-square-red-big-c74ae0e7a89b33acd3beb1f08229630391934650e3bbd30ddc40e8be5bbfc71e.png" align="right" width="100">](https://codewars.com)

> My answers for [Codewars](https://codewars.com) challenges in Javascript.


Codewars is an educational community for computer programming. On the platform, software developers train on programming challenges known as kata. These discrete programming exercises train a variety of skills in a variety of programming languages, and are completed within an online IDE.

## Install

```
$ npm install @abranhe/codewars
```


## Usage

```js
const codewars = require('@abranhe/codewars');

codewars.maskify('454233223424324');
// => ############4324
```

## API

- [codewars.maskify()](docs/credit-card-mask.md)
- [codewars.spinWords()](docs/spin-words.md)
- [codewars.squareDigit()](docs/square-every-digit.md)
- [codewars.complementaryDNA()](docs/complementary-dna.md)
- [codewars.getMiddle()](docs/middle-character.md)
- [codewars.findEvenIndex()](docs/find-even-index.md)

## License

MIT © [Abraham Hernandez](https://abranhe.com)
npm package: @abrifq/tor-detector-with-dns
Description: Detects if given IP is a TOR exit node with the old ip list strategy and new DNS query strategy.
Author: Abrifq
Latest version: 1.0.0

# tor-detector-with-dns

Why this name? I ran out of good names. Most of them are taken.

Check if a request you received is routed via tor.

- `FileBasedChecker` uses the traditional ip file strategy
- `DNSBasedChecker` uses [the new (2020) DNS query strategy](https://lists.torproject.org/pipermail/tor-project/2020-March/002759.html#DNS-Exit-List
) (less waste!)

## Usage

Depending on your usage, use either `tor-detector/dns-checker.js` to check via DNS queries or `tor-detector/local-checker.js` to check with TOR's own auto-published list.

For example, use dns checker for realtime detection and local checker for when you got a list of IPs to skim through.

Both classes have the same function signature:

- `check(ip: string): Promise<boolean>`, takes in an IPv4 address, returns a boolean promise.

```ts
import { DNSBasedChecker as TorChecker } from "tor-checker/dns-checker"
import * as requestIP from "request-ip";
import { NextFunction, Request, Response } from "express"

const torChecker = new TorChecker();

async function handleIPMiddleware(req: Request, res: Response, next: NextFunction) {
    if (await torChecker.check(requestIP.getClientIp(req)))
        handleTorUser(req, res);
    return next();
}

//handle tor users differently. for example, put a banner on top of the template
function handleTorUser(req: Request, res: Response) {
    return res.redirect("/tor-welcome")
}
```

### Advanced Usage

- IP List files get updated "around every 40 minutes", this project fetches the IP list file again if an hour passed since the last request.
  You can change this behavior in `FileBasedChecker` class' constructor by giving it a new Time To Live time, in milliseconds.

- IP List url may get changed or you may have found a more accurate provider, fear not!
  You can change the IP list link url by providing the new url to `FileBasedChecker` class' constructor.

- The DNS Query system may get updated and change how the DNS query is formed. (Or maybe you are using a different provider, who knows)
  You can change the default query constructor with your own one, in `DNSBasedChecker` class' constructor.
npm package: @absolunet/git-archive
Description: git archive --remote wrapper
Author: Absolunet
Latest version: 1.2.1
Deprecated: Not maintained anymore

# @absolunet/git-archive

[![npm](https://img.shields.io/npm/v/@absolunet/git-archive.svg)](https://www.npmjs.com/package/@absolunet/git-archive)
[![npm dependencies](https://david-dm.org/absolunet/node-git-archive/status.svg)](https://david-dm.org/absolunet/node-git-archive)
[![npms](https://badges.npms.io/%40absolunet%2Fgit-archive.svg)](https://npms.io/search?q=%40absolunet%2Fgit-archive)
[![Travis CI](https://api.travis-ci.org/absolunet/node-git-archive.svg?branch=master)](https://travis-ci.org/absolunet/node-git-archive/builds)
[![Code style](https://img.shields.io/badge/code_style-@absolunet/node-659d32.svg)](https://github.com/absolunet/eslint-config-node)

> git archive --remote wrapper


## Install

```sh
$ npm install @absolunet/git-archive
```


## Usage

```js
const gitArchive = require('@absolunet/git-archive');

gitArchive.download('git@github.com:absolunet/node-git-archive.git').then((dir) => {
	console.log(dir);
});

```


## API

### download(url *[, options]*)
Returns a `Promise` with the path of the downloaded archive

#### url
*Required*<br>
Type: `String`<br>
Repo url as specified by [git-archive#remote](https://git-scm.com/docs/git-archive#git-archive---remoteltrepogt)

#### options.treeish
Type: `String`<br>
Default: `master`<br>
The tree or commit to produce an archive for as specified by [git-archive#tree-ish](https://git-scm.com/docs/git-archive#git-archive-lttree-ishgt)

#### options.format
Type: `String`<br>
Default: `zip`<br>
Format of the resulting archive as specified by [git-archive#format](https://git-scm.com/docs/git-archive#git-archive---formatltfmtgt)

#### options.extract
Type: `Boolean`<br>
Default: `true`<br>
Extract the archive

#### options.path
Type: `String`<br>
Default: `tmp`<br>
Path and name of the archive file or path of the extracted archive. If not specified will be put in a temporary path.






<br><br>

## License

MIT © [Absolunet](https://absolunet.com)
npm package: @absolunet/stylelint-config-salesforce
Description: stylelint config for Salesforce
Author: Absolunet
Latest version: 3.1.1
Deprecated: Switch to '@valtech-commerce/stylelint-config'

# @absolunet/stylelint-config-salesforce

[![npm][npm-badge]][npm-url]
[![npm dependencies][dependencies-badge]][dependencies-url]
[![Tests][tests-badge]][tests-url]
[![npms][npms-badge]][npms-url]
[![License: MIT][license-badge]][license-url]

> stylelint config for Salesforce

Opinionated stylelint [extendable config](https://stylelint.io/user-guide/configuration/#extends) for [Salesforce](https://www.salesforce.com/).

Extends [@absolunet/stylelint-config-scss](https://github.com/absolunet/stylelint-config)


## Install

```
$ npm install @absolunet/stylelint-config-salesforce
```


## Usage

Add some stylelint config to your `.stylelintrc.yaml`:

```yaml
extends: '@absolunet/stylelint-config-salesforce'
```


## Related

- [@absolunet/stylelint-loader](https://github.com/absolunet/node-stylelint-loader) - stylelint extendable config YAML loader.

- [Other configs](https://github.com/absolunet/stylelint-config)


## Documentation

See the [full documentation](https://documentation.absolunet.com/stylelint-config/salesforce) for an in-depth look.

See the [Changelog](../../CHANGELOG.md) to see what has changed.


## Contribute

See the [Contributing Guidelines](../../CONTRIBUTING.md) for ways to get started.

See the [Support Guide](../../SUPPORT.md) for ways to get help.

See the [Security Policy](../../SECURITY.md) for sharing vulnerability reports.

This project has a [Code of Conduct](../../CODE_OF_CONDUCT.md).
By interacting with this repository, organization, or community you agree to abide by its terms.


## License

[MIT](LICENSE) © [Absolunet](https://absolunet.com)




[npm-badge]:          https://img.shields.io/npm/v/@absolunet/stylelint-config-salesforce?style=flat-square
[dependencies-badge]: https://img.shields.io/david/absolunet/stylelint-config?path=packages/salesforce&style=flat-square
[tests-badge]:        https://img.shields.io/github/workflow/status/absolunet/stylelint-config/tests/master?label=tests&style=flat-square
[npms-badge]:         https://badges.npms.io/%40absolunet%2Fstylelint-config-salesforce.svg?style=flat-square
[license-badge]:      https://img.shields.io/badge/license-MIT-green?style=flat-square

[npm-url]:          https://www.npmjs.com/package/@absolunet/stylelint-config-salesforce
[dependencies-url]: https://david-dm.org/absolunet/stylelint-config?path=packages/salesforce
[tests-url]:        https://github.com/absolunet/stylelint-config/actions?query=workflow%3Atests+branch%3Amaster
[npms-url]:         https://npms.io/search?q=%40absolunet%2Fstylelint-config-salesforce
[license-url]:      https://opensource.org/licenses/MIT
npm package: @abstract-money/actions-xion
Description: Abstraxion utils
Author: adairrr
Latest version: 0.1.3

# XION Actions

> Abstract.js actions for interacting with XION

## Install

```bash
npm install --save @abstract-money/actions-xion
```

## Usage

### Xion Public Client
```tsx
import { useConfig } from '@abstract-money/react'
import { xionPublicActions } from '@abstract-money/actions-xion'
import { useQuery } from '@tanstack/react-query'

const config = useConfig();
const publicClient = config.usePublicClient({ chainName: 'xiontestnet' })
const cosmWasmClient = config.provider.useCosmWasmClient({ chainName: 'xiontestnet' })
const publicXionClient = publicClient.extend(() => xionPublicActions(cosmWasmClient, 'https://believathon.api.abstract.money'))

const { data: xionEoaAccount } = useQuery({
  queryKey: ['xionAccount', ownerAddress],
  queryFn: async () => {
    if (!publicXionClient) throw new Error('no xion client')
    return publicXionClient.getXionAccountByExternalOwner({ owner: "OWNER_ADDRESS" })
  },
  enabled: !!publicXionClient
})

```

### Xion Wallet Client
```tsx
import { useConfig } from '@abstract-money/react'
import { xionWalletActions } from '@abstract-money/actions-xion'

const config = useConfig();
const walletClient = config.useWalletClient({ chainName: 'xiontestnet' })
const sender = config.provider.useSenderAddress({ chainName: 'xiontestnet' })
const signingCosmWasmClient = config.provider.useCosmWasmClient({ chainName: 'xiontestnet' })
const xionClient = publicClient
  .extend(() => xionWalletActions(signingCosmWasmClient, sender, 'https://believathon.api.abstract.money')

const createXionAccount = async () => {
  return await publicXionClient.createXionAccountExternalOwner({ name: 'My Account', owner: sender })
}

createXionAccount()

```

## License

MIT © [adairrr](https://github.com/adairrr)
npm package: @abuiles/vite-plugin
Description: Cloudflare plugin for Vite
Latest version: 1.10.0

# `@cloudflare/vite-plugin`

The Cloudflare Vite plugin enables a full-featured integration between [Vite](https://vite.dev/) and the [Workers runtime](https://developers.cloudflare.com/workers/runtime-apis/).
Your Worker code runs inside [workerd](https://github.com/cloudflare/workerd), matching the production behavior as closely as possible and providing confidence as you develop and deploy your applications.

```ts
// vite.config.ts

import { defineConfig } from "vite";
import { cloudflare } from "@cloudflare/vite-plugin";

export default defineConfig({
  plugins: [cloudflare()],
});
```

## Documentation

Full documentation can be found [here](https://developers.cloudflare.com/workers/vite-plugin/).

## Features

- Uses the Vite [Environment API](https://vite.dev/guide/api-environment) to integrate Vite with the Workers runtime
- Provides direct access to [Workers runtime APIs](https://developers.cloudflare.com/workers/runtime-apis/) and [bindings](https://developers.cloudflare.com/workers/runtime-apis/bindings/)
- Builds your front-end assets for deployment to Cloudflare, enabling you to build static sites, SPAs, and full-stack applications
- Official support for [React Router v7](https://reactrouter.com/) with server-side rendering
- Leverages Vite's hot module replacement for consistently fast updates
- Supports `vite preview` for previewing your build output in the Workers runtime prior to deployment

## Use cases

- React Router v7 (support for more full-stack frameworks is coming soon)
- Static sites, such as single-page applications, with or without an integrated backend API
- Standalone Workers
- Multi-Worker applications