@swrpg-online/dice 0.5.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,31 @@
1
+ name: Publish Package
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main # Change this to your default branch if necessary
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout code
14
+ uses: actions/checkout@v2
15
+
16
+ - name: Set up Node.js
17
+ uses: actions/setup-node@v2
18
+ with:
19
+ node-version: '16' # Change to the appropriate Node.js version
20
+ registry-url: 'https://registry.npmjs.org/'
21
+
22
+ - name: Install dependencies
23
+ run: npm install
24
+
25
+ - name: Build the project
26
+ run: npm run build
27
+
28
+ - name: Publish package
29
+ run: npm publish
30
+ env:
31
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
File without changes
@@ -0,0 +1,32 @@
1
+ #!/bin/sh
2
+ . "$(dirname "$0")/_/husky.sh"
3
+
4
+ # Check for an existing environment variable to prevent infinite loop
5
+ if [ "$SKIP_HOOK" != "true" ]; then
6
+ export SKIP_HOOK=true
7
+ # Run tests
8
+ npm run test
9
+
10
+ # Check if coverage files have been modified
11
+ if ! git diff --quiet coverage/; then
12
+ # Set an environment variable to prevent re-triggering the hook
13
+ # export SKIP_HOOK=true
14
+
15
+ # Stage coverage files
16
+ git add coverage/
17
+
18
+ # Commit the coverage files
19
+ git commit -m "Add latest coverage files" --allow-empty --no-verify
20
+
21
+ # Unset the environment variable
22
+ unset SKIP_HOOK
23
+ fi
24
+ fi
25
+
26
+ # Build the project
27
+ npm run build
28
+
29
+ # Check for changes in package.json
30
+ if git diff --cached --name-only | grep package.json; then
31
+ npm version patch # Use 'minor'/'major' as needed
32
+ fi
package/.replit ADDED
@@ -0,0 +1,8 @@
1
+ modules = ["web", "nodejs-20"]
2
+ run = "node index.js"
3
+
4
+ [nix]
5
+ channel = "stable-24_05"
6
+
7
+ [deployment]
8
+ run = ["sh", "-c", "node index.js"]
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1732735622726" clover="3.2.0">
3
- <project timestamp="1732735622726" name="All files">
2
+ <coverage generated="1733155876718" clover="3.2.0">
3
+ <project timestamp="1733155876718" name="All files">
4
4
  <metrics statements="98" coveredstatements="92" conditionals="81" coveredconditionals="81" methods="20" coveredmethods="15" elements="199" coveredelements="188" complexity="0" loc="98" ncloc="98" packages="1" files="3" classes="3"/>
5
5
  <file name="dice.ts" path="/Users/joshuaziggas/swrpg-online/dice/src/dice.ts">
6
6
  <metrics statements="87" coveredstatements="87" conditionals="78" coveredconditionals="78" methods="11" coveredmethods="11"/>
@@ -802,7 +802,7 @@ export const roll = (pool: DicePool): RollResult =&gt; {
802
802
  <div class='footer quiet pad2 space-top1 center small'>
803
803
  Code coverage generated by
804
804
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
805
- at 2024-11-27T19:27:02.720Z
805
+ at 2024-12-02T16:11:16.711Z
806
806
  </div>
807
807
  <script src="prettify.js"></script>
808
808
  <script>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at 2024-11-27T19:27:02.720Z
134
+ at 2024-12-02T16:11:16.711Z
135
135
  </div>
136
136
  <script src="prettify.js"></script>
137
137
  <script>
@@ -94,7 +94,7 @@ export type { DicePool, RollResult } from './types';
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
97
- at 2024-11-27T19:27:02.720Z
97
+ at 2024-12-02T16:11:16.711Z
98
98
  </div>
99
99
  <script src="prettify.js"></script>
100
100
  <script>
@@ -238,7 +238,7 @@ export const createDifficultyPool = (difficulty: number, challenge: number = 0):
238
238
  <div class='footer quiet pad2 space-top1 center small'>
239
239
  Code coverage generated by
240
240
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
241
- at 2024-11-27T19:27:02.720Z
241
+ at 2024-12-02T16:11:16.711Z
242
242
  </div>
243
243
  <script src="prettify.js"></script>
244
244
  <script>
package/jest.config.js CHANGED
@@ -3,5 +3,6 @@ module.exports = {
3
3
  testEnvironment: 'node',
4
4
  testMatch: ['**/tests/**/*.test.ts'],
5
5
  collectCoverage: true,
6
- collectCoverageFrom: ['src/**/*.ts']
6
+ collectCoverageFrom: ['src/**/*.ts'],
7
+ coverageDirectory: "coverage/"
7
8
  };
package/package.json CHANGED
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "name": "@swrpg-online/dice",
3
- "version": "0.5.0",
3
+ "version": "0.9.0",
4
4
  "description": "A TypeScript library for simulating Star Wars RPG narrative dice rolls.",
5
- "main": "jest.config.js",
5
+ "main": "dist/index.js",
6
6
  "directories": {
7
7
  "test": "tests"
8
8
  },
9
9
  "scripts": {
10
- "test": "npx jest --verbose"
10
+ "test": "npx jest --verbose",
11
+ "build": "tsc",
12
+ "prepare": "npm run build && husky install"
11
13
  },
12
14
  "keywords": [],
13
- "author": "Chris Pan",
15
+ "author": "@swrpg-online",
14
16
  "license": "MIT",
15
17
  "dependencies": {
16
18
  "@types/jest": "^29.5.14",
@@ -19,7 +21,9 @@
19
21
  "ts-jest": "^29.2.5",
20
22
  "typescript": "^5.7.2"
21
23
  },
22
- "devDependencies": {},
24
+ "devDependencies": {
25
+ "husky": "^8.0.0"
26
+ },
23
27
  "repository": {
24
28
  "type": "git",
25
29
  "url": "https://github.com/swrpg-online/dice"
package/src/dice.js DELETED
@@ -1,229 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.roll = void 0;
4
- var rollDie = function (sides) { return Math.floor(Math.random() * sides) + 1; };
5
- var boostDieResult = function (roll) {
6
- switch (roll) {
7
- case 3:
8
- return { successes: 1, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
9
- case 4:
10
- return { successes: 1, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
11
- case 5:
12
- return { successes: 0, failures: 0, advantages: 2, threats: 0, triumphs: 0, despair: 0 };
13
- case 6:
14
- return { successes: 0, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
15
- default:
16
- return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
17
- }
18
- };
19
- var setBackDieResult = function (roll) {
20
- switch (roll) {
21
- case 3:
22
- case 4:
23
- return { successes: 0, failures: 1, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
24
- case 5:
25
- case 6:
26
- return { successes: 0, failures: 0, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
27
- default:
28
- return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
29
- }
30
- };
31
- var abilityDieResult = function (roll) {
32
- switch (roll) {
33
- case 2:
34
- case 3:
35
- return { successes: 1, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
36
- case 4:
37
- return { successes: 2, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
38
- case 5:
39
- case 6:
40
- return { successes: 0, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
41
- case 7:
42
- return { successes: 1, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
43
- case 8:
44
- return { successes: 0, failures: 0, advantages: 2, threats: 0, triumphs: 0, despair: 0 };
45
- default:
46
- return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
47
- }
48
- };
49
- var difficultyDieResult = function (roll) {
50
- switch (roll) {
51
- case 2:
52
- return { successes: 0, failures: 1, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
53
- case 3:
54
- return { successes: 0, failures: 2, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
55
- case 4:
56
- case 5:
57
- case 6:
58
- return { successes: 0, failures: 0, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
59
- case 7:
60
- return { successes: 0, failures: 0, advantages: 0, threats: 2, triumphs: 0, despair: 0 };
61
- case 8:
62
- return { successes: 0, failures: 1, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
63
- default:
64
- return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
65
- }
66
- };
67
- var proficiencyDieResult = function (roll) {
68
- switch (roll) {
69
- case 2:
70
- case 3:
71
- return { successes: 1, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
72
- case 4:
73
- case 5:
74
- return { successes: 2, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
75
- case 6:
76
- return { successes: 0, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
77
- case 7:
78
- case 8:
79
- case 9:
80
- return { successes: 1, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
81
- case 10:
82
- case 11:
83
- return { successes: 0, failures: 0, advantages: 2, threats: 0, triumphs: 0, despair: 0 };
84
- case 12:
85
- return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 1, despair: 0 };
86
- default:
87
- return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
88
- }
89
- };
90
- var challengeDieResult = function (roll) {
91
- switch (roll) {
92
- case 2:
93
- case 3:
94
- return { successes: 0, failures: 1, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
95
- case 4:
96
- case 5:
97
- return { successes: 0, failures: 2, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
98
- case 6:
99
- case 7:
100
- return { successes: 0, failures: 0, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
101
- case 8:
102
- case 9:
103
- return { successes: 0, failures: 1, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
104
- case 10:
105
- case 11:
106
- return { successes: 0, failures: 0, advantages: 0, threats: 2, triumphs: 0, despair: 0 };
107
- case 12:
108
- return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 1 };
109
- default:
110
- return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
111
- }
112
- };
113
- var sumResults = function (results) {
114
- var sums = results.reduce(function (acc, curr) { return ({
115
- successes: acc.successes + curr.successes,
116
- failures: acc.failures + curr.failures,
117
- advantages: acc.advantages + curr.advantages,
118
- threats: acc.threats + curr.threats,
119
- triumphs: acc.triumphs + curr.triumphs,
120
- despair: acc.despair + curr.despair
121
- }); }, {
122
- successes: 0,
123
- failures: 0,
124
- advantages: 0,
125
- threats: 0,
126
- triumphs: 0,
127
- despair: 0
128
- });
129
- // Calculate net successes/failures
130
- var netSuccesses = 0;
131
- var netFailures = 0;
132
- if (sums.successes === sums.failures) {
133
- netSuccesses = 0;
134
- netFailures = 0;
135
- }
136
- else if (sums.successes > sums.failures) {
137
- netSuccesses = sums.successes - sums.failures;
138
- }
139
- else {
140
- netFailures = sums.failures - sums.successes;
141
- }
142
- return {
143
- successes: netSuccesses,
144
- failures: netFailures,
145
- advantages: sums.advantages,
146
- threats: sums.threats,
147
- triumphs: sums.triumphs,
148
- despair: sums.despair
149
- };
150
- };
151
- var roll = function (pool) {
152
- var _a, _b, _c, _d, _e, _f;
153
- // Initialize all dice counts to 0 if undefined
154
- var boostCount = (_a = pool.boostDice) !== null && _a !== void 0 ? _a : 0;
155
- var abilityCount = (_b = pool.abilityDice) !== null && _b !== void 0 ? _b : 0;
156
- var proficiencyCount = (_c = pool.proficiencyDice) !== null && _c !== void 0 ? _c : 0;
157
- var setBackCount = (_d = pool.setBackDice) !== null && _d !== void 0 ? _d : 0;
158
- var difficultyCount = (_e = pool.difficultyDice) !== null && _e !== void 0 ? _e : 0;
159
- var challengeCount = (_f = pool.challengeDice) !== null && _f !== void 0 ? _f : 0;
160
- // Ensure all dice counts are non-negative
161
- var sanitizedPool = {
162
- boostDice: Math.max(0, boostCount),
163
- abilityDice: Math.max(0, abilityCount),
164
- proficiencyDice: Math.max(0, proficiencyCount),
165
- setBackDice: Math.max(0, setBackCount),
166
- difficultyDice: Math.max(0, difficultyCount),
167
- challengeDice: Math.max(0, challengeCount)
168
- };
169
- var detailedResults = [];
170
- // Roll boost dice
171
- for (var i = 0; i < sanitizedPool.boostDice; i++) {
172
- var roll_1 = rollDie(6);
173
- detailedResults.push({
174
- type: 'boost',
175
- roll: roll_1,
176
- result: boostDieResult(roll_1)
177
- });
178
- }
179
- // Roll ability dice
180
- for (var i = 0; i < sanitizedPool.abilityDice; i++) {
181
- var roll_2 = rollDie(8);
182
- detailedResults.push({
183
- type: 'ability',
184
- roll: roll_2,
185
- result: abilityDieResult(roll_2)
186
- });
187
- }
188
- // Roll proficiency dice
189
- for (var i = 0; i < sanitizedPool.proficiencyDice; i++) {
190
- var roll_3 = rollDie(12);
191
- detailedResults.push({
192
- type: 'proficiency',
193
- roll: roll_3,
194
- result: proficiencyDieResult(roll_3)
195
- });
196
- }
197
- // Roll setback dice
198
- for (var i = 0; i < sanitizedPool.setBackDice; i++) {
199
- var roll_4 = rollDie(6);
200
- detailedResults.push({
201
- type: 'setback',
202
- roll: roll_4,
203
- result: setBackDieResult(roll_4)
204
- });
205
- }
206
- // Roll difficulty dice
207
- for (var i = 0; i < sanitizedPool.difficultyDice; i++) {
208
- var roll_5 = rollDie(8);
209
- detailedResults.push({
210
- type: 'difficulty',
211
- roll: roll_5,
212
- result: difficultyDieResult(roll_5)
213
- });
214
- }
215
- // Roll challenge dice
216
- for (var i = 0; i < sanitizedPool.challengeDice; i++) {
217
- var roll_6 = rollDie(12);
218
- detailedResults.push({
219
- type: 'challenge',
220
- roll: roll_6,
221
- result: challengeDieResult(roll_6)
222
- });
223
- }
224
- return {
225
- results: detailedResults,
226
- summary: sumResults(detailedResults.map(function (r) { return r.result; }))
227
- };
228
- };
229
- exports.roll = roll;
package/src/types.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });