From 4b11ffa4d2db825efc7af80f9236e5796875a0b7 Mon Sep 17 00:00:00 2001 From: kitsuyui Date: Mon, 3 Aug 2026 02:45:00 +0900 Subject: [PATCH] fix: drop the unused power-of-ten rarity helper Remove the dead PR rarity helper and its dedicated test so the maintained code, coverage accounting, and published dist surface reflect the rules that are still reachable in production. --- dist/rarity.d.mts | 3 +-- dist/rarity.d.mts.map | 2 +- dist/rarity.mjs | 2 +- dist/rarity.mjs.map | 2 +- src/rarity.spec.ts | 8 -------- src/rarity.ts | 12 ------------ 6 files changed, 4 insertions(+), 25 deletions(-) diff --git a/dist/rarity.d.mts b/dist/rarity.d.mts index 9dedddc..dd36478 100644 --- a/dist/rarity.d.mts +++ b/dist/rarity.d.mts @@ -3,7 +3,6 @@ interface RarityContext { prNum: number; repositoryCommitCount: number; } -declare function expectedPowersOfTen(prNum: number): number; declare function expectedSingleNonzeroDigitPrNumbers(prNum: number): number; declare function expectedPowersOfTwo(prNum: number): number; declare function expectedAllSevens(prNum: number): number; @@ -14,5 +13,5 @@ declare function expectedCommitHitsSameNumbers(repositoryCommitCount: number): n declare function expectedCommitHitsHexspeak(repositoryCommitCount: number): number; declare function isRareEnough(expectedOccurrences: number, maxExpectedOccurrences?: number): boolean; //#endregion -export { RarityContext, expectedAllSevens, expectedCommitHits123, expectedCommitHits666, expectedCommitHits777, expectedCommitHitsHexspeak, expectedCommitHitsSameNumbers, expectedPowersOfTen, expectedPowersOfTwo, expectedSingleNonzeroDigitPrNumbers, isRareEnough }; +export { RarityContext, expectedAllSevens, expectedCommitHits123, expectedCommitHits666, expectedCommitHits777, expectedCommitHitsHexspeak, expectedCommitHitsSameNumbers, expectedPowersOfTwo, expectedSingleNonzeroDigitPrNumbers, isRareEnough }; //# sourceMappingURL=rarity.d.mts.map \ No newline at end of file diff --git a/dist/rarity.d.mts.map b/dist/rarity.d.mts.map index 70c8fce..4ff390f 100644 --- a/dist/rarity.d.mts.map +++ b/dist/rarity.d.mts.map @@ -1 +1 @@ -{"version":3,"file":"rarity.d.mts","names":[],"sources":["../rarity.ts"],"mappings":";UAEiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;EACf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAiBc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAYpB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAapC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKpB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAalB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAItB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAItB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAItB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAWc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"rarity.d.mts","names":[],"sources":["../rarity.ts"],"mappings":";UAEiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;EACf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAiBc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAapC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKpB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAalB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAItB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAItB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAItB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAWc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"} \ No newline at end of file diff --git a/dist/rarity.mjs b/dist/rarity.mjs index 8a823d6..ec7bd83 100644 --- a/dist/rarity.mjs +++ b/dist/rarity.mjs @@ -1,2 +1,2 @@ -function e(e){return Math.max(0,40-e+1)}function t(t,n){return t*(e(n)/16**n)}function n(e){let t=0,n=10;for(;n<=e;)t+=1,n*=10;return t}function r(e){if(e<10)return 0;let t=e.toString().length,n=(t-2)*9,r=10**(t-1),i=Math.floor(e/r);return n+Math.min(i,9)}function i(e){return[512,1024,2048,4096,8192,16384,32768,65536].filter(t=>t<=e).length}function a(e){let t=0;for(let n=3;n<=e.toString().length;n+=1)Number.parseInt(`7`.repeat(n),10)<=e&&(t+=1);return t}function o(e){return t(e,3)}function s(e){return t(e,3)}function c(e){return t(e,3)}function l(t){return t*(e(5)/16**4)}function u(t){return t*[`f00d`,`feed`,`cafe`,`c0ffee`,`deadbeef`].reduce((t,n)=>t+e(n.length)/16**n.length,0)}function d(e,t){return t===void 0?!0:e<=t}export{a as expectedAllSevens,c as expectedCommitHits123,s as expectedCommitHits666,o as expectedCommitHits777,u as expectedCommitHitsHexspeak,l as expectedCommitHitsSameNumbers,n as expectedPowersOfTen,i as expectedPowersOfTwo,r as expectedSingleNonzeroDigitPrNumbers,d as isRareEnough}; +function e(e){return Math.max(0,40-e+1)}function t(t,n){return t*(e(n)/16**n)}function n(e){if(e<10)return 0;let t=e.toString().length,n=(t-2)*9,r=10**(t-1),i=Math.floor(e/r);return n+Math.min(i,9)}function r(e){return[512,1024,2048,4096,8192,16384,32768,65536].filter(t=>t<=e).length}function i(e){let t=0;for(let n=3;n<=e.toString().length;n+=1)Number.parseInt(`7`.repeat(n),10)<=e&&(t+=1);return t}function a(e){return t(e,3)}function o(e){return t(e,3)}function s(e){return t(e,3)}function c(t){return t*(e(5)/16**4)}function l(t){return t*[`f00d`,`feed`,`cafe`,`c0ffee`,`deadbeef`].reduce((t,n)=>t+e(n.length)/16**n.length,0)}function u(e,t){return t===void 0?!0:e<=t}export{i as expectedAllSevens,s as expectedCommitHits123,o as expectedCommitHits666,a as expectedCommitHits777,l as expectedCommitHitsHexspeak,c as expectedCommitHitsSameNumbers,r as expectedPowersOfTwo,n as expectedSingleNonzeroDigitPrNumbers,u as isRareEnough}; //# sourceMappingURL=rarity.mjs.map \ No newline at end of file diff --git a/dist/rarity.mjs.map b/dist/rarity.mjs.map index 27578b7..bc8c1ef 100644 --- a/dist/rarity.mjs.map +++ b/dist/rarity.mjs.map @@ -1 +1 @@ -{"version":3,"file":"rarity.mjs","names":[],"sources":["../src/rarity.ts"],"sourcesContent":["const SHA_LENGTH = 40\n\nexport interface RarityContext {\n prNum: number\n repositoryCommitCount: number\n}\n\nfunction slidingWindows(length: number): number {\n return Math.max(0, SHA_LENGTH - length + 1)\n}\n\nfunction expectedOccurrencesFromSubstringProbability(\n repositoryCommitCount: number,\n substringLength: number\n): number {\n return (\n repositoryCommitCount *\n (slidingWindows(substringLength) / 16 ** substringLength)\n )\n}\n\nexport function expectedPowersOfTen(prNum: number): number {\n let count = 0\n let current = 10\n\n while (current <= prNum) {\n count += 1\n current *= 10\n }\n\n return count\n}\n\nexport function expectedSingleNonzeroDigitPrNumbers(prNum: number): number {\n if (prNum < 10) {\n return 0\n }\n\n const digits = prNum.toString().length\n const shorterDigitMatches = (digits - 2) * 9\n const currentDigitBase = 10 ** (digits - 1)\n const currentLeadingDigit = Math.floor(prNum / currentDigitBase)\n\n return shorterDigitMatches + Math.min(currentLeadingDigit, 9)\n}\n\nexport function expectedPowersOfTwo(prNum: number): number {\n const values = [512, 1024, 2048, 4096, 8192, 16384, 32768, 65536]\n return values.filter((value) => value <= prNum).length\n}\n\nexport function expectedAllSevens(prNum: number): number {\n let count = 0\n\n for (let digits = 3; digits <= prNum.toString().length; digits += 1) {\n const value = Number.parseInt('7'.repeat(digits), 10)\n if (value <= prNum) {\n count += 1\n }\n }\n\n return count\n}\n\nexport function expectedCommitHits777(repositoryCommitCount: number): number {\n return expectedOccurrencesFromSubstringProbability(repositoryCommitCount, 3)\n}\n\nexport function expectedCommitHits666(repositoryCommitCount: number): number {\n return expectedOccurrencesFromSubstringProbability(repositoryCommitCount, 3)\n}\n\nexport function expectedCommitHits123(repositoryCommitCount: number): number {\n return expectedOccurrencesFromSubstringProbability(repositoryCommitCount, 3)\n}\n\nexport function expectedCommitHitsSameNumbers(\n repositoryCommitCount: number\n): number {\n return repositoryCommitCount * (slidingWindows(5) / 16 ** 4)\n}\n\nexport function expectedCommitHitsHexspeak(\n repositoryCommitCount: number\n): number {\n const patterns = ['f00d', 'feed', 'cafe', 'c0ffee', 'deadbeef']\n\n const probability = patterns.reduce((sum, pattern) => {\n return sum + slidingWindows(pattern.length) / 16 ** pattern.length\n }, 0)\n\n return repositoryCommitCount * probability\n}\n\nexport function isRareEnough(\n expectedOccurrences: number,\n maxExpectedOccurrences?: number\n): boolean {\n if (maxExpectedOccurrences === undefined) {\n return true\n }\n\n return expectedOccurrences <= maxExpectedOccurrences\n}\n"],"mappings":"AAOA,SAAS,EAAe,EAAwB,CAC9C,OAAO,KAAK,IAAI,EAAG,GAAa,EAAS,EAAE,CAG7C,SAAS,EACP,EACA,EACQ,CACR,OACE,GACC,EAAe,EAAgB,CAAG,IAAM,GAI7C,SAAgB,EAAoB,EAAuB,CACzD,IAAI,EAAQ,EACR,EAAU,GAEd,KAAO,GAAW,GAChB,GAAS,EACT,GAAW,GAGb,OAAO,EAGT,SAAgB,EAAoC,EAAuB,CACzE,GAAI,EAAQ,GACV,MAAO,GAGT,IAAM,EAAS,EAAM,UAAU,CAAC,OAC1B,GAAuB,EAAS,GAAK,EACrC,EAAmB,KAAO,EAAS,GACnC,EAAsB,KAAK,MAAM,EAAQ,EAAiB,CAEhE,OAAO,EAAsB,KAAK,IAAI,EAAqB,EAAE,CAG/D,SAAgB,EAAoB,EAAuB,CAEzD,MADe,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAM,CACnD,OAAQ,GAAU,GAAS,EAAM,CAAC,OAGlD,SAAgB,EAAkB,EAAuB,CACvD,IAAI,EAAQ,EAEZ,IAAK,IAAI,EAAS,EAAG,GAAU,EAAM,UAAU,CAAC,OAAQ,GAAU,EAClD,OAAO,SAAS,IAAI,OAAO,EAAO,CAAE,GAAG,EACxC,IACX,GAAS,GAIb,OAAO,EAGT,SAAgB,EAAsB,EAAuC,CAC3E,OAAO,EAA4C,EAAuB,EAAE,CAG9E,SAAgB,EAAsB,EAAuC,CAC3E,OAAO,EAA4C,EAAuB,EAAE,CAG9E,SAAgB,EAAsB,EAAuC,CAC3E,OAAO,EAA4C,EAAuB,EAAE,CAG9E,SAAgB,EACd,EACQ,CACR,OAAO,GAAyB,EAAe,EAAE,CAAG,IAAM,GAG5D,SAAgB,EACd,EACQ,CAOR,OAAO,EANU,CAAC,OAAQ,OAAQ,OAAQ,SAAU,WAAW,CAElC,QAAQ,EAAK,IACjC,EAAM,EAAe,EAAQ,OAAO,CAAG,IAAM,EAAQ,OAC3D,EAAE,CAKP,SAAgB,EACd,EACA,EACS,CAKT,OAJI,IAA2B,IAAA,GACtB,GAGF,GAAuB"} \ No newline at end of file +{"version":3,"file":"rarity.mjs","names":[],"sources":["../src/rarity.ts"],"sourcesContent":["const SHA_LENGTH = 40\n\nexport interface RarityContext {\n prNum: number\n repositoryCommitCount: number\n}\n\nfunction slidingWindows(length: number): number {\n return Math.max(0, SHA_LENGTH - length + 1)\n}\n\nfunction expectedOccurrencesFromSubstringProbability(\n repositoryCommitCount: number,\n substringLength: number\n): number {\n return (\n repositoryCommitCount *\n (slidingWindows(substringLength) / 16 ** substringLength)\n )\n}\n\nexport function expectedSingleNonzeroDigitPrNumbers(prNum: number): number {\n if (prNum < 10) {\n return 0\n }\n\n const digits = prNum.toString().length\n const shorterDigitMatches = (digits - 2) * 9\n const currentDigitBase = 10 ** (digits - 1)\n const currentLeadingDigit = Math.floor(prNum / currentDigitBase)\n\n return shorterDigitMatches + Math.min(currentLeadingDigit, 9)\n}\n\nexport function expectedPowersOfTwo(prNum: number): number {\n const values = [512, 1024, 2048, 4096, 8192, 16384, 32768, 65536]\n return values.filter((value) => value <= prNum).length\n}\n\nexport function expectedAllSevens(prNum: number): number {\n let count = 0\n\n for (let digits = 3; digits <= prNum.toString().length; digits += 1) {\n const value = Number.parseInt('7'.repeat(digits), 10)\n if (value <= prNum) {\n count += 1\n }\n }\n\n return count\n}\n\nexport function expectedCommitHits777(repositoryCommitCount: number): number {\n return expectedOccurrencesFromSubstringProbability(repositoryCommitCount, 3)\n}\n\nexport function expectedCommitHits666(repositoryCommitCount: number): number {\n return expectedOccurrencesFromSubstringProbability(repositoryCommitCount, 3)\n}\n\nexport function expectedCommitHits123(repositoryCommitCount: number): number {\n return expectedOccurrencesFromSubstringProbability(repositoryCommitCount, 3)\n}\n\nexport function expectedCommitHitsSameNumbers(\n repositoryCommitCount: number\n): number {\n return repositoryCommitCount * (slidingWindows(5) / 16 ** 4)\n}\n\nexport function expectedCommitHitsHexspeak(\n repositoryCommitCount: number\n): number {\n const patterns = ['f00d', 'feed', 'cafe', 'c0ffee', 'deadbeef']\n\n const probability = patterns.reduce((sum, pattern) => {\n return sum + slidingWindows(pattern.length) / 16 ** pattern.length\n }, 0)\n\n return repositoryCommitCount * probability\n}\n\nexport function isRareEnough(\n expectedOccurrences: number,\n maxExpectedOccurrences?: number\n): boolean {\n if (maxExpectedOccurrences === undefined) {\n return true\n }\n\n return expectedOccurrences <= maxExpectedOccurrences\n}\n"],"mappings":"AAOA,SAAS,EAAe,EAAwB,CAC9C,OAAO,KAAK,IAAI,EAAG,GAAa,EAAS,EAAE,CAG7C,SAAS,EACP,EACA,EACQ,CACR,OACE,GACC,EAAe,EAAgB,CAAG,IAAM,GAI7C,SAAgB,EAAoC,EAAuB,CACzE,GAAI,EAAQ,GACV,MAAO,GAGT,IAAM,EAAS,EAAM,UAAU,CAAC,OAC1B,GAAuB,EAAS,GAAK,EACrC,EAAmB,KAAO,EAAS,GACnC,EAAsB,KAAK,MAAM,EAAQ,EAAiB,CAEhE,OAAO,EAAsB,KAAK,IAAI,EAAqB,EAAE,CAG/D,SAAgB,EAAoB,EAAuB,CAEzD,MADe,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAM,CACnD,OAAQ,GAAU,GAAS,EAAM,CAAC,OAGlD,SAAgB,EAAkB,EAAuB,CACvD,IAAI,EAAQ,EAEZ,IAAK,IAAI,EAAS,EAAG,GAAU,EAAM,UAAU,CAAC,OAAQ,GAAU,EAClD,OAAO,SAAS,IAAI,OAAO,EAAO,CAAE,GAAG,EACxC,IACX,GAAS,GAIb,OAAO,EAGT,SAAgB,EAAsB,EAAuC,CAC3E,OAAO,EAA4C,EAAuB,EAAE,CAG9E,SAAgB,EAAsB,EAAuC,CAC3E,OAAO,EAA4C,EAAuB,EAAE,CAG9E,SAAgB,EAAsB,EAAuC,CAC3E,OAAO,EAA4C,EAAuB,EAAE,CAG9E,SAAgB,EACd,EACQ,CACR,OAAO,GAAyB,EAAe,EAAE,CAAG,IAAM,GAG5D,SAAgB,EACd,EACQ,CAOR,OAAO,EANU,CAAC,OAAQ,OAAQ,OAAQ,SAAU,WAAW,CAElC,QAAQ,EAAK,IACjC,EAAM,EAAe,EAAQ,OAAO,CAAG,IAAM,EAAQ,OAC3D,EAAE,CAKP,SAAgB,EACd,EACA,EACS,CAKT,OAJI,IAA2B,IAAA,GACtB,GAGF,GAAuB"} \ No newline at end of file diff --git a/src/rarity.spec.ts b/src/rarity.spec.ts index 4ba7677..668deee 100644 --- a/src/rarity.spec.ts +++ b/src/rarity.spec.ts @@ -7,20 +7,12 @@ import { expectedCommitHits777, expectedCommitHitsHexspeak, expectedCommitHitsSameNumbers, - expectedPowersOfTen, expectedPowersOfTwo, expectedSingleNonzeroDigitPrNumbers, isRareEnough, } from './rarity' describe('rarity helpers', () => { - it('counts power-of-ten pull request milestones up to the current PR', () => { - expect(expectedPowersOfTen(9)).toBe(0) - expect(expectedPowersOfTen(10)).toBe(1) - expect(expectedPowersOfTen(999)).toBe(2) - expect(expectedPowersOfTen(10000)).toBe(4) - }) - it('counts single nonzero digit pull request milestones', () => { expect(expectedSingleNonzeroDigitPrNumbers(9)).toBe(0) expect(expectedSingleNonzeroDigitPrNumbers(10)).toBe(1) diff --git a/src/rarity.ts b/src/rarity.ts index 4a6901f..693f497 100644 --- a/src/rarity.ts +++ b/src/rarity.ts @@ -19,18 +19,6 @@ function expectedOccurrencesFromSubstringProbability( ) } -export function expectedPowersOfTen(prNum: number): number { - let count = 0 - let current = 10 - - while (current <= prNum) { - count += 1 - current *= 10 - } - - return count -} - export function expectedSingleNonzeroDigitPrNumbers(prNum: number): number { if (prNum < 10) { return 0