{"_id":"@cassracp/jsdice","_rev":"3-2f867414ebf7967f92b8ad947df671f5","name":"@cassracp/jsdice","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@cassracp/jsdice","version":"1.0.0","keywords":["dice","roll","ttrpg","roller","typescript","random"],"author":{"name":"cassracp"},"license":"MIT","_id":"@cassracp/jsdice@1.0.0","maintainers":[{"name":"cassracp","email":"cassracp@gmail.com"}],"homepage":"https://github.com/cassracp/jsdice#readme","bugs":{"url":"https://github.com/cassracp/jsdice/issues"},"dist":{"shasum":"b106707a34388823e515155bf06de654c84d46e1","tarball":"https://registry.npmjs.org/@cassracp/jsdice/-/jsdice-1.0.0.tgz","fileCount":5,"integrity":"sha512-LjH60ez9T3GDUiPvK4zeJKJpWiiXwCdHWKus1XMok0EwDnKUm3rVy5SyI5waNbi2FM8tiIKZ9vuNPJzmvCp3zA==","signatures":[{"sig":"MEYCIQDLjrRlDWEC5wCrR2O64d0brRxqdOKOwNI2ytypFvrfcAIhAJ7+xwONkDJZNdIlNiXFNkNvmn0sZ6JcmZiTVLz6cGMS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19775},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"71fcc4631b9aec1cf33a4f2073730aad10cd5f86","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"cassracp","email":"cassracp@gmail.com"},"repository":{"url":"git+https://github.com/cassracp/jsdice.git","type":"git"},"_npmVersion":"11.6.0","description":"A powerful and flexible TypeScript library for simulating dice rolls, inspired by Discord bots like 'Rollem'.","directories":{},"_nodeVersion":"20.19.5","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","ts-jest":"^29.4.5","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/jsdice_1.0.0_1763231125388_0.24700675548597206","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cassracp/jsdice","version":"1.0.1","keywords":["dice","roll","ttrpg","roller","typescript","random"],"author":{"name":"cassracp"},"license":"MIT","_id":"@cassracp/jsdice@1.0.1","maintainers":[{"name":"cassracp","email":"cassracp@gmail.com"}],"homepage":"https://github.com/cassracp/jsdice#readme","bugs":{"url":"https://github.com/cassracp/jsdice/issues"},"dist":{"shasum":"91d6280bdfa181e4f3e2d68875cdc7f711dd5946","tarball":"https://registry.npmjs.org/@cassracp/jsdice/-/jsdice-1.0.1.tgz","fileCount":5,"integrity":"sha512-0hVsSmc8j2Ol7K7u8XnT3D7epDfLFsIhC2RbFCvkmboSNxPPwk+uhVdsqRUVHujVbSh7K751XLWbk30r7MiEKg==","signatures":[{"sig":"MEUCIEO6VM/YOuk23muhNdXWf6LOBBDoGvppni0HMGKe/QrGAiEAlFYktGC7COQdP0cPSxwHLWc+GnxY/FI2FSnyDGiXr+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19569},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"687925bd6429d68658b232710b34aa5ddc9fe76f","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"cassracp","email":"cassracp@gmail.com"},"repository":{"url":"git+https://github.com/cassracp/jsdice.git","type":"git"},"_npmVersion":"11.6.0","description":"A powerful and flexible TypeScript library for simulating dice rolls, inspired by Discord bots like 'Rollem'.","directories":{},"_nodeVersion":"20.19.5","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","ts-jest":"^29.4.5","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/jsdice_1.0.1_1763232826035_0.5764558018225014","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@cassracp/jsdice","version":"1.1.0","description":"A powerful and flexible TypeScript library for simulating dice rolls, inspired by Discord bots like 'Rollem'.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","test":"jest"},"keywords":["dice","roll","ttrpg","roller","typescript","random"],"author":{"name":"cassracp"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/cassracp/jsdice.git"},"type":"commonjs","devDependencies":{"@types/jest":"^30.0.0","@types/node":"^24.10.1","jest":"^30.2.0","ts-jest":"^29.4.5","typescript":"^5.9.3"},"_id":"@cassracp/jsdice@1.1.0","gitHead":"bf4b402e8b7fb20cff1dec62eac3ce3064e4e79f","bugs":{"url":"https://github.com/cassracp/jsdice/issues"},"homepage":"https://github.com/cassracp/jsdice#readme","_nodeVersion":"20.19.5","_npmVersion":"11.6.0","dist":{"integrity":"sha512-XpPk+OdEGANdbq/1XG/rGbuCeLTrL2GWxp2LS2pjD7mZ+6+CpO9zZ8asgH6EeKvP2YWG3n0Qv6rEs/t2HGjTfA==","shasum":"15c3c0a90997cbf51928442960379b46eb61b15f","tarball":"https://registry.npmjs.org/@cassracp/jsdice/-/jsdice-1.1.0.tgz","fileCount":5,"unpackedSize":19967,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDfpegj7q39h/wSzLzb/dKA4XU5rPO+YhBgKCxYXPjcdwIgZ6lO8NQ4c/SREZStHtcZtPtE5Epjv+YUS7RYasFWM8M="}]},"_npmUser":{"name":"cassracp","email":"cassracp@gmail.com"},"directories":{},"maintainers":[{"name":"cassracp","email":"cassracp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jsdice_1.1.0_1763245447244_0.6815038102506745"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-15T18:25:25.287Z","modified":"2025-11-15T22:24:07.658Z","1.0.0":"2025-11-15T18:25:25.596Z","1.0.1":"2025-11-15T18:53:46.258Z","1.1.0":"2025-11-15T22:24:07.453Z"},"bugs":{"url":"https://github.com/cassracp/jsdice/issues"},"author":{"name":"cassracp"},"license":"MIT","homepage":"https://github.com/cassracp/jsdice#readme","keywords":["dice","roll","ttrpg","roller","typescript","random"],"repository":{"type":"git","url":"git+https://github.com/cassracp/jsdice.git"},"description":"A powerful and flexible TypeScript library for simulating dice rolls, inspired by Discord bots like 'Rollem'.","maintainers":[{"name":"cassracp","email":"cassracp@gmail.com"}],"readme":"# jsdice\n\n🇬🇧\nA powerful and flexible TypeScript library for simulating dice rolls, inspired by Discord bots like \"Rollem\". It supports a wide range of modifiers, including keep/drop, rerolls, and exploding dice.\n\n---\n🇧🇷\nUma biblioteca TypyScript poderosa e flexível para simulação de rolagem de dados, inspirada principalmente por bots do Discord como \"Rollem\". Ela suporta uma vasta gama de modificadores, incluindo manter/descartar (keep/drop), rerrolagens e explosões de dados.\n\n---\n\n\n\n## 📖 Table of Contents (Índice)\n- [jsdice](#jsdice)\n  - [📖 Table of Contents (Índice)](#-table-of-contents-índice)\n  - [🇬🇧 English Documentation](#-english-documentation)\n    - [Installation](#installation)\n    - [Basic Usage](#basic-usage)\n    - [API Reference](#api-reference)\n      - [`roll(notation)`](#rollnotation)\n      - [`countSuccesses(notation, condition)`](#countsuccessesnotation-condition)\n    - [Dice Notation Modifiers](#dice-notation-modifiers)\n  - [🇧🇷 Documentação em Português](#-documentação-em-português)\n    - [Instalação](#instalação)\n    - [Uso Básico](#uso-básico)\n    - [Referência da API](#referência-da-api)\n      - [`roll(notacao)`](#rollnotacao)\n      - [`countSuccesses(notacao, condicao)`](#countsuccessesnotacao-condicao)\n    - [Modificadores de Notação](#modificadores-de-notação)\n\n---\n\n## 🇬🇧 English Documentation\n\n### Installation\n\n```bash\nnpm install @cassracp/jsdice\n```\n\n### Basic Usage\n\nThe library exports two main functions: `roll` and `countSuccesses`.\n\n```typescript\nimport { roll, countSuccesses } from '@cassracp/jsdice';\nconst results = roll('4d6kh3!+5');\nconst firstResult = results[0];\nconsole.log(`Rolled [${firstResult.rolls.join(', ')}] for a total of ${firstResult.total}`);\n// Example output: Rolled [6, 5, 4] for a total of 20\n\n// Count successes in a pool of dice\nconst successResults = countSuccesses('10d6', '>=5');\nconst firstSuccessResult = successResults[0];\nconsole.log(`You got ${firstSuccessResult.successCount} successes! [${firstSuccessResult.rolls.join(', ')}]`);\n// Example output: You got 4 successes! [5, 2, 6, 1, 4, 6, 3, 5, 1, 6]\n```\n\n### API Reference\n\n#### `roll(notation)`\nEvaluates a dice notation string and returns an array of detailed results.\n\n- **`notation`**: `string` - The dice notation string (e.g., `\"2d10+5\"`). Can contain multiple expressions separated by commas (e.g., `\"1d20, 3d6-2\"`).\n- **Returns**: `RollResult[]` - An array of result objects.\n\n**`RollResult` Object:**\n```typescript\n{\n  notation: string; // The original notation for this part of the roll\n  total: number;    // The final sum, including all modifiers\n  rolls: number[];  // The final set of dice used to calculate the total\n}\n```\n\n#### `countSuccesses(notation, condition)`\nRolls dice and counts how many individual dice meet a specific condition.\n\n- **`notation`**: `string` - The dice notation string, which is evaluated first.\n- **`condition`**: `string` - The condition to check for success (e.g., `\">5\"`, `\"<3\"`, `\"=6\"`).\n- **Returns**: `SuccessCountResult[]` - An array of success-counting result objects.\n\n**`SuccessCountResult` Object:**\n```typescript\n{\n  notation: string;     // The original notation for this part of the roll\n  successCount: number; // The number of dice that met the condition\n  rolls: number[];      // The final set of dice that were checked\n}\n```\n\n### Dice Notation Modifiers\n\nModifiers are appended to a standard `XdY` roll (e.g., `4d6`).\n\n| Modifier | Name | Example | Description |\n| :--- | :--- | :--- | :--- |\n| `kh` | **Keep Highest** | `4d6kh3` | Rolls 4d6 and keeps the 3 highest dice. |\n| `kl` | **Keep Lowest** | `4d6kl3` | Rolls 4d6 and keeps the 3 lowest dice. |\n| `dh` | **Drop Highest** | `4d6dh1` | Rolls 4d6 and drops the single highest die. |\n| `dl` | **Drop Lowest** | `4d6dl1` | Rolls 4d6 and drops the single lowest die. |\n| `r` | **Reroll** | `2d10r<3` | Rolls 2d10 and rerolls any die that is less than 3 *once*. |\n| `L` | **Limit (Reroll)** | `10d6r=1L3` | Rerolls on a 1, but only up to a maximum of 3 dice from the set. |\n| `!` | **Explode** | `3d6!` | Rolls 3d6. If any die is a 6 (max value), roll it again and add it to the pool. |\n| `!>=` | **Conditional Explode** | `5d10!>=8` | Rolls 5d10. Any die that is 8 or higher explodes. |\n| `L` | **Limit (Explode)** | `3d6!L1` | Each die can only explode a maximum of 1 time. |\n| `+`/`-` | **Modifier** | `1d20+5` | Adds or subtracts a flat number from the total. |\n| `*` | **Multiplication** | `3d6*10` | Multiplies the final total by a given factor. |\n\n---\n\n## 🇧🇷 Documentação em Português\n\n### Instalação\n\n```bash\nnpm install @cassracp/jsdice\n```\n\n### Uso Básico\n\nA biblioteca exporta duas funções principais: `roll` e `countSuccesses`.\n\n```typescript\nimport { roll, countSuccesses } from '@cassracp/jsdice';\n\n// Obter o total de uma rolagem complexa\nconst results = roll('4d6kh3!+5');\nconst firstResult = results[0];\nconsole.log(`Rolou [${firstResult.rolls.join(', ')}] para um total de ${firstResult.total}`);\n// Exemplo de saída: Rolou [6, 5, 4] para um total de 20\n\n// Contar sucessos em um conjunto de dados\nconst successResults = countSuccesses('10d6', '>=5');\nconst firstSuccessResult = successResults[0];\nconsole.log(`Você obteve ${firstSuccessResult.successCount} sucessos! [${firstSuccessResult.rolls.join(', ')}]`);\n// Exemplo de saída: Você obteve 4 sucessos! [5, 2, 6, 1, 4, 6, 3, 5, 1, 6]\n```\n\n### Referência da API\n\n#### `roll(notacao)`\nAvalia uma string de notação de dados e retorna um array de resultados detalhados.\n\n- **`notacao`**: `string` - A string de notação (ex: `\"2d10+5\"`). Pode conter múltiplas expressões separadas por vírgula (ex: `\"1d20, 3d6-2\"`).\n- **Retorna**: `RollResult[]` - Um array de objetos de resultado.\n\n**Objeto `RollResult`:**\n```typescript\n{\n  notation: string; // A notação original para esta parte da rolagem\n  total: number;    // A soma final, incluindo todos os modificadores\n  rolls: number[];  // O conjunto final de dados usado para calcular o total\n}\n```\n\n#### `countSuccesses(notacao, condicao)`\nRola os dados e conta quantos dados individuais atendem a uma condição específica.\n\n- **`notacao`**: `string` - A string de notação de dados, que é avaliada primeiro.\n- **`condicao`**: `string` - A condição para verificar o sucesso (ex: `\">5\"`, `\"<3\"`, `\"=6\"`).\n- **Retorna**: `SuccessCountResult[]` - Um array de objetos de resultado da contagem de sucessos.\n\n**Objeto `SuccessCountResult`:**\n```typescript\n{\n  notation: string;     // A notação original para esta parte da rolagem\n  successCount: number; // O número de dados que atendeu à condição\n  rolls: number[];      // O conjunto final de dados que foi verificado\n}\n```\n\n### Modificadores de Notação\n\nOs modificadores são adicionados a uma rolagem padrão `XdY` (ex: `4d6`).\n\n| Modificador | Nome | Exemplo | Descrição |\n| :--- | :--- | :--- | :--- |\n| `kh` | **Manter Maiores** | `4d6kh3` | Rola 4d6 e mantém os 3 dados mais altos. |\n| `kl` | **Manter Menores** | `4d6kl3` | Rola 4d6 e mantém os 3 dados mais baixos. |\n| `dh` | **Descartar Maiores** | `4d6dh1` | Rola 4d6 e descarta o dado mais alto. |\n| `dl` | **Descartar Menores** | `4d6dl1` | Rola 4d6 e descarta o dado mais baixo. |\n| `r` | **Rerrolar** | `2d10r<3` | Rola 2d10 e rerrola *uma vez* qualquer dado que seja menor que 3. |\n| `L` | **Limite (Rerolagem)** | `10d6r=1L3` | Rerrola se o resultado for 1, mas no máximo 3 dados do conjunto. |\n| `!` | **Explodir** | `3d6!` | Rola 3d6. Se qualquer dado for 6 (valor máx.), role-o novamente e adicione ao total. |\n| `!>=` | **Explosão Condicional** | `5d10!>=8` | Rola 5d10. Qualquer dado com resultado 8 ou maior explode. |\n| `L` | **Limite (Explosão)** | `3d6!L1` | Cada dado pode explodir no máximo 1 vez. |\n| `+`/`-` | **Modificador** | `1d20+5` | Adiciona ou subtrai um número fixo do total. |\n| `*` | **Multiplicação** | `3d6*10` | Multiplica o total final por um dado fator. |\n","readmeFilename":"README.md"}