@xyo-network/crypto-nft-collection-witness-plugin 2.75.0 → 2.75.2

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.
Files changed (178) hide show
  1. package/dist/browser/Plugin.d.cts +56 -0
  2. package/dist/browser/Plugin.d.cts.map +1 -0
  3. package/dist/browser/Plugin.js +4 -169
  4. package/dist/browser/Plugin.js.map +1 -1
  5. package/dist/browser/Witness.d.cts +10 -0
  6. package/dist/browser/Witness.d.cts.map +1 -0
  7. package/dist/browser/Witness.js +5 -126
  8. package/dist/browser/Witness.js.map +1 -1
  9. package/dist/browser/index.d.cts +6 -0
  10. package/dist/browser/index.d.cts.map +1 -0
  11. package/dist/browser/index.js +4 -186
  12. package/dist/browser/index.js.map +1 -1
  13. package/dist/browser/lib/collectionMetrics/getNftCollectionMetrics.d.cts +4 -0
  14. package/dist/browser/lib/collectionMetrics/getNftCollectionMetrics.d.cts.map +1 -0
  15. package/dist/browser/lib/collectionMetrics/getNftCollectionMetrics.js +2 -35
  16. package/dist/browser/lib/collectionMetrics/getNftCollectionMetrics.js.map +1 -1
  17. package/dist/browser/lib/collectionMetrics/index.d.cts +2 -0
  18. package/dist/browser/lib/collectionMetrics/index.d.cts.map +1 -0
  19. package/dist/browser/lib/collectionMetrics/index.js +1 -59
  20. package/dist/browser/lib/collectionMetrics/index.js.map +1 -1
  21. package/dist/browser/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.d.cts +3 -0
  22. package/dist/browser/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.d.cts.map +1 -0
  23. package/dist/browser/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js +1 -2
  24. package/dist/browser/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js.map +1 -1
  25. package/dist/browser/lib/collectionMetrics/lib/calculatePropertyDistribution.d.cts +3 -0
  26. package/dist/browser/lib/collectionMetrics/lib/calculatePropertyDistribution.d.cts.map +1 -0
  27. package/dist/browser/lib/collectionMetrics/lib/calculatePropertyDistribution.js +1 -2
  28. package/dist/browser/lib/collectionMetrics/lib/calculatePropertyDistribution.js.map +1 -1
  29. package/dist/browser/lib/collectionMetrics/lib/distribution.d.cts +6 -0
  30. package/dist/browser/lib/collectionMetrics/lib/distribution.d.cts.map +1 -0
  31. package/dist/browser/lib/collectionMetrics/lib/index.d.cts +4 -0
  32. package/dist/browser/lib/collectionMetrics/lib/index.d.cts.map +1 -0
  33. package/dist/browser/lib/collectionMetrics/lib/index.js +3 -48
  34. package/dist/browser/lib/collectionMetrics/lib/index.js.map +1 -1
  35. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.d.cts +8 -0
  36. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.d.cts.map +1 -0
  37. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.js +1 -2
  38. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.js.map +1 -1
  39. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.d.cts +9 -0
  40. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.d.cts.map +1 -0
  41. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.js +1 -2
  42. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.js.map +1 -1
  43. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.d.cts +3 -0
  44. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.d.cts.map +1 -0
  45. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.js +2 -22
  46. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.js.map +1 -1
  47. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/index.d.cts +2 -0
  48. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/index.d.cts.map +1 -0
  49. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/index.js +1 -22
  50. package/dist/browser/lib/collectionMetrics/lib/probabilityDistributions/index.js.map +1 -1
  51. package/dist/browser/lib/getNftCollectionCount.d.cts +2 -0
  52. package/dist/browser/lib/getNftCollectionCount.d.cts.map +1 -0
  53. package/dist/browser/lib/getNftCollectionCount.js +2 -10
  54. package/dist/browser/lib/getNftCollectionCount.js.map +1 -1
  55. package/dist/browser/lib/getNftCollectionMetadata.d.cts +3 -0
  56. package/dist/browser/lib/getNftCollectionMetadata.d.cts.map +1 -0
  57. package/dist/browser/lib/getNftCollectionMetadata.js +2 -10
  58. package/dist/browser/lib/getNftCollectionMetadata.js.map +1 -1
  59. package/dist/browser/lib/getNftCollectionNfts.d.cts +3 -0
  60. package/dist/browser/lib/getNftCollectionNfts.d.cts.map +1 -0
  61. package/dist/browser/lib/getNftCollectionNfts.js +2 -10
  62. package/dist/browser/lib/getNftCollectionNfts.js.map +1 -1
  63. package/dist/browser/lib/index.d.cts +5 -0
  64. package/dist/browser/lib/index.d.cts.map +1 -0
  65. package/dist/browser/lib/index.js +4 -124
  66. package/dist/browser/lib/index.js.map +1 -1
  67. package/dist/browser/lib/nonEvaluableContractAddresses.d.cts +6 -0
  68. package/dist/browser/lib/nonEvaluableContractAddresses.d.cts.map +1 -0
  69. package/dist/browser/lib/nonEvaluableContractAddresses.js +1 -2
  70. package/dist/browser/lib/nonEvaluableContractAddresses.js.map +1 -1
  71. package/dist/docs.json +22903 -0
  72. package/dist/node/Plugin.d.cts +56 -0
  73. package/dist/node/Plugin.d.cts.map +1 -0
  74. package/dist/node/Plugin.js +170 -5
  75. package/dist/node/Plugin.js.map +1 -1
  76. package/dist/node/Plugin.mjs +172 -4
  77. package/dist/node/Plugin.mjs.map +1 -1
  78. package/dist/node/Witness.d.cts +10 -0
  79. package/dist/node/Witness.d.cts.map +1 -0
  80. package/dist/node/Witness.js +138 -13
  81. package/dist/node/Witness.js.map +1 -1
  82. package/dist/node/Witness.mjs +133 -9
  83. package/dist/node/Witness.mjs.map +1 -1
  84. package/dist/node/index.d.cts +6 -0
  85. package/dist/node/index.d.cts.map +1 -0
  86. package/dist/node/index.js +195 -9
  87. package/dist/node/index.js.map +1 -1
  88. package/dist/node/index.mjs +189 -4
  89. package/dist/node/index.mjs.map +1 -1
  90. package/dist/node/lib/collectionMetrics/getNftCollectionMetrics.d.cts +4 -0
  91. package/dist/node/lib/collectionMetrics/getNftCollectionMetrics.d.cts.map +1 -0
  92. package/dist/node/lib/collectionMetrics/getNftCollectionMetrics.js +45 -6
  93. package/dist/node/lib/collectionMetrics/getNftCollectionMetrics.js.map +1 -1
  94. package/dist/node/lib/collectionMetrics/getNftCollectionMetrics.mjs +39 -3
  95. package/dist/node/lib/collectionMetrics/getNftCollectionMetrics.mjs.map +1 -1
  96. package/dist/node/lib/collectionMetrics/index.d.cts +2 -0
  97. package/dist/node/lib/collectionMetrics/index.d.cts.map +1 -0
  98. package/dist/node/lib/collectionMetrics/index.js +70 -3
  99. package/dist/node/lib/collectionMetrics/index.js.map +1 -1
  100. package/dist/node/lib/collectionMetrics/index.mjs +62 -1
  101. package/dist/node/lib/collectionMetrics/index.mjs.map +1 -1
  102. package/dist/node/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.d.cts +3 -0
  103. package/dist/node/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.d.cts.map +1 -0
  104. package/dist/node/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js +3 -1
  105. package/dist/node/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js.map +1 -1
  106. package/dist/node/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.mjs +2 -1
  107. package/dist/node/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.mjs.map +1 -1
  108. package/dist/node/lib/collectionMetrics/lib/calculatePropertyDistribution.d.cts +3 -0
  109. package/dist/node/lib/collectionMetrics/lib/calculatePropertyDistribution.d.cts.map +1 -0
  110. package/dist/node/lib/collectionMetrics/lib/calculatePropertyDistribution.js +3 -1
  111. package/dist/node/lib/collectionMetrics/lib/calculatePropertyDistribution.js.map +1 -1
  112. package/dist/node/lib/collectionMetrics/lib/calculatePropertyDistribution.mjs +2 -1
  113. package/dist/node/lib/collectionMetrics/lib/calculatePropertyDistribution.mjs.map +1 -1
  114. package/dist/node/lib/collectionMetrics/lib/distribution.d.cts +6 -0
  115. package/dist/node/lib/collectionMetrics/lib/distribution.d.cts.map +1 -0
  116. package/dist/node/lib/collectionMetrics/lib/distribution.js +2 -0
  117. package/dist/node/lib/collectionMetrics/lib/distribution.js.map +1 -1
  118. package/dist/node/lib/collectionMetrics/lib/index.d.cts +4 -0
  119. package/dist/node/lib/collectionMetrics/lib/index.d.cts.map +1 -0
  120. package/dist/node/lib/collectionMetrics/lib/index.js +58 -7
  121. package/dist/node/lib/collectionMetrics/lib/index.js.map +1 -1
  122. package/dist/node/lib/collectionMetrics/lib/index.mjs +48 -3
  123. package/dist/node/lib/collectionMetrics/lib/index.mjs.map +1 -1
  124. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.d.cts +8 -0
  125. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.d.cts.map +1 -0
  126. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.js +3 -1
  127. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.js.map +1 -1
  128. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.mjs +2 -1
  129. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.mjs.map +1 -1
  130. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.d.cts +9 -0
  131. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.d.cts.map +1 -0
  132. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.js +3 -1
  133. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.js.map +1 -1
  134. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.mjs +2 -1
  135. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.mjs.map +1 -1
  136. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.d.cts +3 -0
  137. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.d.cts.map +1 -0
  138. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.js +31 -5
  139. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.js.map +1 -1
  140. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.mjs +22 -2
  141. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/binomial/index.mjs.map +1 -1
  142. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/index.d.cts +2 -0
  143. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/index.d.cts.map +1 -0
  144. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/index.js +31 -3
  145. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/index.js.map +1 -1
  146. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/index.mjs +22 -1
  147. package/dist/node/lib/collectionMetrics/lib/probabilityDistributions/index.mjs.map +1 -1
  148. package/dist/node/lib/getNftCollectionCount.d.cts +2 -0
  149. package/dist/node/lib/getNftCollectionCount.d.cts.map +1 -0
  150. package/dist/node/lib/getNftCollectionCount.js +12 -3
  151. package/dist/node/lib/getNftCollectionCount.js.map +1 -1
  152. package/dist/node/lib/getNftCollectionCount.mjs +10 -2
  153. package/dist/node/lib/getNftCollectionCount.mjs.map +1 -1
  154. package/dist/node/lib/getNftCollectionMetadata.d.cts +3 -0
  155. package/dist/node/lib/getNftCollectionMetadata.d.cts.map +1 -0
  156. package/dist/node/lib/getNftCollectionMetadata.js +12 -3
  157. package/dist/node/lib/getNftCollectionMetadata.js.map +1 -1
  158. package/dist/node/lib/getNftCollectionMetadata.mjs +10 -2
  159. package/dist/node/lib/getNftCollectionMetadata.mjs.map +1 -1
  160. package/dist/node/lib/getNftCollectionNfts.d.cts +3 -0
  161. package/dist/node/lib/getNftCollectionNfts.d.cts.map +1 -0
  162. package/dist/node/lib/getNftCollectionNfts.js +12 -3
  163. package/dist/node/lib/getNftCollectionNfts.js.map +1 -1
  164. package/dist/node/lib/getNftCollectionNfts.mjs +10 -2
  165. package/dist/node/lib/getNftCollectionNfts.mjs.map +1 -1
  166. package/dist/node/lib/index.d.cts +5 -0
  167. package/dist/node/lib/index.d.cts.map +1 -0
  168. package/dist/node/lib/index.js +138 -9
  169. package/dist/node/lib/index.js.map +1 -1
  170. package/dist/node/lib/index.mjs +127 -4
  171. package/dist/node/lib/index.mjs.map +1 -1
  172. package/dist/node/lib/nonEvaluableContractAddresses.d.cts +6 -0
  173. package/dist/node/lib/nonEvaluableContractAddresses.d.cts.map +1 -0
  174. package/dist/node/lib/nonEvaluableContractAddresses.js +3 -1
  175. package/dist/node/lib/nonEvaluableContractAddresses.js.map +1 -1
  176. package/dist/node/lib/nonEvaluableContractAddresses.mjs +2 -1
  177. package/dist/node/lib/nonEvaluableContractAddresses.mjs.map +1 -1
  178. package/package.json +13 -13
@@ -1,6 +1,42 @@
1
- import { calculateAllPropertiesDistribution, calculateBinomialParamsFromProbability } from "./lib";
2
- const getNftCollectionMetrics = (nfts) => {
3
- const traits = nfts.map((nft) => nft?.metadata?.attributes).filter((v) => v !== void 0).map((attributes2) => {
1
+ // src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts
2
+ var calculateAllPropertiesDistribution = (array) => {
3
+ const distribution = {};
4
+ array.forEach((item) => {
5
+ for (const property in item) {
6
+ if (Object.prototype.hasOwnProperty.call(item, property)) {
7
+ const value = item[property];
8
+ if (value !== void 0 && value !== null) {
9
+ const valueString = value.toString();
10
+ if (!distribution[property]) {
11
+ distribution[property] = { [valueString]: 1 };
12
+ } else if (!distribution[property][valueString]) {
13
+ ;
14
+ distribution[property][valueString] = 1;
15
+ } else {
16
+ ;
17
+ distribution[property][valueString] += 1;
18
+ }
19
+ }
20
+ }
21
+ }
22
+ });
23
+ return distribution;
24
+ };
25
+
26
+ // src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts
27
+ var calculateBinomialParamsFromProbability = (n, p) => {
28
+ const mean = n * p;
29
+ const variance = n * p * (1 - p);
30
+ const stdDev = Math.sqrt(variance);
31
+ return { mean, p, stdDev, variance };
32
+ };
33
+
34
+ // src/lib/collectionMetrics/getNftCollectionMetrics.ts
35
+ var getNftCollectionMetrics = (nfts) => {
36
+ const traits = nfts.map((nft) => {
37
+ var _a;
38
+ return (_a = nft == null ? void 0 : nft.metadata) == null ? void 0 : _a.attributes;
39
+ }).filter((v) => v !== void 0).map((attributes2) => {
4
40
  return Object.fromEntries(attributes2.map((attribute) => [attribute.trait_type, attribute.value]));
5
41
  });
6
42
  const distribution = calculateAllPropertiesDistribution(traits);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/collectionMetrics/getNftCollectionMetrics.ts"],"sourcesContent":["import { NftCollectionMetrics, NftTraitMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { NftInfoFields, OpenSeaNftAttribute } from '@xyo-network/crypto-nft-payload-plugin'\n\nimport { calculateAllPropertiesDistribution, calculateBinomialParamsFromProbability } from './lib'\n\ntype TraitDistributionEntry = [string, { [key: string]: number }]\n\nexport const getNftCollectionMetrics = (nfts: NftInfoFields[]): NftCollectionMetrics => {\n const traits = nfts\n .map((nft) => nft?.metadata?.attributes as OpenSeaNftAttribute[] | undefined)\n .filter((v): v is OpenSeaNftAttribute[] => v !== undefined)\n .map((attributes) => {\n return Object.fromEntries(attributes.map((attribute) => [attribute.trait_type, attribute.value]))\n })\n const distribution = calculateAllPropertiesDistribution(traits)\n const n = nfts.length\n const attributes = Object.fromEntries(\n Object.entries(distribution)\n .filter((v): v is TraitDistributionEntry => v[1] !== undefined)\n .map(([trait, entries]) => {\n const traitCount = Object.values(entries).reduce((prev, curr) => prev + curr, 0)\n const { p } = calculateBinomialParamsFromProbability(nfts.length, traitCount / n)\n const values = Object.fromEntries(\n Object.entries(entries).map(([value, traitValueCount]) => {\n const { p } = calculateBinomialParamsFromProbability(n, traitValueCount / n)\n const metrics: NftTraitMetrics = { binomial: { p }, count: traitValueCount }\n return [value, metrics]\n }),\n )\n return [trait, { metrics: { binomial: { p }, count: traitCount }, values }]\n }),\n )\n return { metadata: { attributes } }\n}\n"],"mappings":"AAGA,SAAS,oCAAoC,8CAA8C;AAIpF,MAAM,0BAA0B,CAAC,SAAgD;AACtF,QAAM,SAAS,KACZ,IAAI,CAAC,QAAQ,KAAK,UAAU,UAA+C,EAC3E,OAAO,CAAC,MAAkC,MAAM,MAAS,EACzD,IAAI,CAACA,gBAAe;AACnB,WAAO,OAAO,YAAYA,YAAW,IAAI,CAAC,cAAc,CAAC,UAAU,YAAY,UAAU,KAAK,CAAC,CAAC;AAAA,EAClG,CAAC;AACH,QAAM,eAAe,mCAAmC,MAAM;AAC9D,QAAM,IAAI,KAAK;AACf,QAAM,aAAa,OAAO;AAAA,IACxB,OAAO,QAAQ,YAAY,EACxB,OAAO,CAAC,MAAmC,EAAE,CAAC,MAAM,MAAS,EAC7D,IAAI,CAAC,CAAC,OAAO,OAAO,MAAM;AACzB,YAAM,aAAa,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,SAAS,OAAO,MAAM,CAAC;AAC/E,YAAM,EAAE,EAAE,IAAI,uCAAuC,KAAK,QAAQ,aAAa,CAAC;AAChF,YAAM,SAAS,OAAO;AAAA,QACpB,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,eAAe,MAAM;AACxD,gBAAM,EAAE,GAAAC,GAAE,IAAI,uCAAuC,GAAG,kBAAkB,CAAC;AAC3E,gBAAM,UAA2B,EAAE,UAAU,EAAE,GAAAA,GAAE,GAAG,OAAO,gBAAgB;AAC3E,iBAAO,CAAC,OAAO,OAAO;AAAA,QACxB,CAAC;AAAA,MACH;AACA,aAAO,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,WAAW,GAAG,OAAO,CAAC;AAAA,IAC5E,CAAC;AAAA,EACL;AACA,SAAO,EAAE,UAAU,EAAE,WAAW,EAAE;AACpC;","names":["attributes","p"]}
1
+ {"version":3,"sources":["../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts","../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts","../../../../src/lib/collectionMetrics/getNftCollectionMetrics.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n","import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given the number of trials and success probability\n * @param n Number of trials\n * @param p Success probability\n * @returns The binomial distribution parameters\n */\nexport const calculateBinomialParamsFromProbability = (n: number, p: number): BinomialDistributionParameters => {\n // Mean (µ)\n const mean = n * p\n\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n\n return { mean, p, stdDev, variance }\n}\n","import { NftCollectionMetrics, NftTraitMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { NftInfoFields, OpenSeaNftAttribute } from '@xyo-network/crypto-nft-payload-plugin'\n\nimport { calculateAllPropertiesDistribution, calculateBinomialParamsFromProbability } from './lib'\n\ntype TraitDistributionEntry = [string, { [key: string]: number }]\n\nexport const getNftCollectionMetrics = (nfts: NftInfoFields[]): NftCollectionMetrics => {\n const traits = nfts\n .map((nft) => nft?.metadata?.attributes as OpenSeaNftAttribute[] | undefined)\n .filter((v): v is OpenSeaNftAttribute[] => v !== undefined)\n .map((attributes) => {\n return Object.fromEntries(attributes.map((attribute) => [attribute.trait_type, attribute.value]))\n })\n const distribution = calculateAllPropertiesDistribution(traits)\n const n = nfts.length\n const attributes = Object.fromEntries(\n Object.entries(distribution)\n .filter((v): v is TraitDistributionEntry => v[1] !== undefined)\n .map(([trait, entries]) => {\n const traitCount = Object.values(entries).reduce((prev, curr) => prev + curr, 0)\n const { p } = calculateBinomialParamsFromProbability(nfts.length, traitCount / n)\n const values = Object.fromEntries(\n Object.entries(entries).map(([value, traitValueCount]) => {\n const { p } = calculateBinomialParamsFromProbability(n, traitValueCount / n)\n const metrics: NftTraitMetrics = { binomial: { p }, count: traitValueCount }\n return [value, metrics]\n }),\n )\n return [trait, { metrics: { binomial: { p }, count: traitCount }, values }]\n }),\n )\n return { metadata: { attributes } }\n}\n"],"mappings":";AAEO,IAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AChBO,IAAM,yCAAyC,CAAC,GAAW,MAA8C;AAE9G,QAAM,OAAO,IAAI;AAGjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAG9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AAEjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;;;ACZO,IAAM,0BAA0B,CAAC,SAAgD;AACtF,QAAM,SAAS,KACZ,IAAI,CAAC,QAAK;AATf;AASkB,4CAAK,aAAL,mBAAe;AAAA,GAA+C,EAC3E,OAAO,CAAC,MAAkC,MAAM,MAAS,EACzD,IAAI,CAACA,gBAAe;AACnB,WAAO,OAAO,YAAYA,YAAW,IAAI,CAAC,cAAc,CAAC,UAAU,YAAY,UAAU,KAAK,CAAC,CAAC;AAAA,EAClG,CAAC;AACH,QAAM,eAAe,mCAAmC,MAAM;AAC9D,QAAM,IAAI,KAAK;AACf,QAAM,aAAa,OAAO;AAAA,IACxB,OAAO,QAAQ,YAAY,EACxB,OAAO,CAAC,MAAmC,EAAE,CAAC,MAAM,MAAS,EAC7D,IAAI,CAAC,CAAC,OAAO,OAAO,MAAM;AACzB,YAAM,aAAa,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,SAAS,OAAO,MAAM,CAAC;AAC/E,YAAM,EAAE,EAAE,IAAI,uCAAuC,KAAK,QAAQ,aAAa,CAAC;AAChF,YAAM,SAAS,OAAO;AAAA,QACpB,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,eAAe,MAAM;AACxD,gBAAM,EAAE,GAAAC,GAAE,IAAI,uCAAuC,GAAG,kBAAkB,CAAC;AAC3E,gBAAM,UAA2B,EAAE,UAAU,EAAE,GAAAA,GAAE,GAAG,OAAO,gBAAgB;AAC3E,iBAAO,CAAC,OAAO,OAAO;AAAA,QACxB,CAAC;AAAA,MACH;AACA,aAAO,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,WAAW,GAAG,OAAO,CAAC;AAAA,IAC5E,CAAC;AAAA,EACL;AACA,SAAO,EAAE,UAAU,EAAE,WAAW,EAAE;AACpC;","names":["attributes","p"]}
@@ -0,0 +1,2 @@
1
+ export * from './getNftCollectionMetrics';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/collectionMetrics/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA"}
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
6
10
  var __copyProps = (to, from, except, desc) => {
7
11
  if (from && typeof from === "object" || typeof from === "function") {
8
12
  for (let key of __getOwnPropNames(from))
@@ -11,13 +15,76 @@ var __copyProps = (to, from, except, desc) => {
11
15
  }
12
16
  return to;
13
17
  };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/collectionMetrics/index.ts
16
21
  var collectionMetrics_exports = {};
22
+ __export(collectionMetrics_exports, {
23
+ getNftCollectionMetrics: () => getNftCollectionMetrics
24
+ });
17
25
  module.exports = __toCommonJS(collectionMetrics_exports);
18
- __reExport(collectionMetrics_exports, require("./getNftCollectionMetrics"), module.exports);
26
+
27
+ // src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts
28
+ var calculateAllPropertiesDistribution = (array) => {
29
+ const distribution = {};
30
+ array.forEach((item) => {
31
+ for (const property in item) {
32
+ if (Object.prototype.hasOwnProperty.call(item, property)) {
33
+ const value = item[property];
34
+ if (value !== void 0 && value !== null) {
35
+ const valueString = value.toString();
36
+ if (!distribution[property]) {
37
+ distribution[property] = { [valueString]: 1 };
38
+ } else if (!distribution[property][valueString]) {
39
+ ;
40
+ distribution[property][valueString] = 1;
41
+ } else {
42
+ ;
43
+ distribution[property][valueString] += 1;
44
+ }
45
+ }
46
+ }
47
+ }
48
+ });
49
+ return distribution;
50
+ };
51
+
52
+ // src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts
53
+ var calculateBinomialParamsFromProbability = (n, p) => {
54
+ const mean = n * p;
55
+ const variance = n * p * (1 - p);
56
+ const stdDev = Math.sqrt(variance);
57
+ return { mean, p, stdDev, variance };
58
+ };
59
+
60
+ // src/lib/collectionMetrics/getNftCollectionMetrics.ts
61
+ var getNftCollectionMetrics = (nfts) => {
62
+ const traits = nfts.map((nft) => {
63
+ var _a;
64
+ return (_a = nft == null ? void 0 : nft.metadata) == null ? void 0 : _a.attributes;
65
+ }).filter((v) => v !== void 0).map((attributes2) => {
66
+ return Object.fromEntries(attributes2.map((attribute) => [attribute.trait_type, attribute.value]));
67
+ });
68
+ const distribution = calculateAllPropertiesDistribution(traits);
69
+ const n = nfts.length;
70
+ const attributes = Object.fromEntries(
71
+ Object.entries(distribution).filter((v) => v[1] !== void 0).map(([trait, entries]) => {
72
+ const traitCount = Object.values(entries).reduce((prev, curr) => prev + curr, 0);
73
+ const { p } = calculateBinomialParamsFromProbability(nfts.length, traitCount / n);
74
+ const values = Object.fromEntries(
75
+ Object.entries(entries).map(([value, traitValueCount]) => {
76
+ const { p: p2 } = calculateBinomialParamsFromProbability(n, traitValueCount / n);
77
+ const metrics = { binomial: { p: p2 }, count: traitValueCount };
78
+ return [value, metrics];
79
+ })
80
+ );
81
+ return [trait, { metrics: { binomial: { p }, count: traitCount }, values }];
82
+ })
83
+ );
84
+ return { metadata: { attributes } };
85
+ };
19
86
  // Annotate the CommonJS export names for ESM import in node:
20
87
  0 && (module.exports = {
21
- ...require("./getNftCollectionMetrics")
88
+ getNftCollectionMetrics
22
89
  });
23
90
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/collectionMetrics/index.ts"],"sourcesContent":["export * from './getNftCollectionMetrics'\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,sCAAc,sCAAd;","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/collectionMetrics/index.ts","../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts","../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts","../../../../src/lib/collectionMetrics/getNftCollectionMetrics.ts"],"sourcesContent":["export * from './getNftCollectionMetrics'\n","import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n","import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given the number of trials and success probability\n * @param n Number of trials\n * @param p Success probability\n * @returns The binomial distribution parameters\n */\nexport const calculateBinomialParamsFromProbability = (n: number, p: number): BinomialDistributionParameters => {\n // Mean (µ)\n const mean = n * p\n\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n\n return { mean, p, stdDev, variance }\n}\n","import { NftCollectionMetrics, NftTraitMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { NftInfoFields, OpenSeaNftAttribute } from '@xyo-network/crypto-nft-payload-plugin'\n\nimport { calculateAllPropertiesDistribution, calculateBinomialParamsFromProbability } from './lib'\n\ntype TraitDistributionEntry = [string, { [key: string]: number }]\n\nexport const getNftCollectionMetrics = (nfts: NftInfoFields[]): NftCollectionMetrics => {\n const traits = nfts\n .map((nft) => nft?.metadata?.attributes as OpenSeaNftAttribute[] | undefined)\n .filter((v): v is OpenSeaNftAttribute[] => v !== undefined)\n .map((attributes) => {\n return Object.fromEntries(attributes.map((attribute) => [attribute.trait_type, attribute.value]))\n })\n const distribution = calculateAllPropertiesDistribution(traits)\n const n = nfts.length\n const attributes = Object.fromEntries(\n Object.entries(distribution)\n .filter((v): v is TraitDistributionEntry => v[1] !== undefined)\n .map(([trait, entries]) => {\n const traitCount = Object.values(entries).reduce((prev, curr) => prev + curr, 0)\n const { p } = calculateBinomialParamsFromProbability(nfts.length, traitCount / n)\n const values = Object.fromEntries(\n Object.entries(entries).map(([value, traitValueCount]) => {\n const { p } = calculateBinomialParamsFromProbability(n, traitValueCount / n)\n const metrics: NftTraitMetrics = { binomial: { p }, count: traitValueCount }\n return [value, metrics]\n }),\n )\n return [trait, { metrics: { binomial: { p }, count: traitCount }, values }]\n }),\n )\n return { metadata: { attributes } }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,IAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AChBO,IAAM,yCAAyC,CAAC,GAAW,MAA8C;AAE9G,QAAM,OAAO,IAAI;AAGjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAG9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AAEjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;;;ACZO,IAAM,0BAA0B,CAAC,SAAgD;AACtF,QAAM,SAAS,KACZ,IAAI,CAAC,QAAK;AATf;AASkB,4CAAK,aAAL,mBAAe;AAAA,GAA+C,EAC3E,OAAO,CAAC,MAAkC,MAAM,MAAS,EACzD,IAAI,CAACA,gBAAe;AACnB,WAAO,OAAO,YAAYA,YAAW,IAAI,CAAC,cAAc,CAAC,UAAU,YAAY,UAAU,KAAK,CAAC,CAAC;AAAA,EAClG,CAAC;AACH,QAAM,eAAe,mCAAmC,MAAM;AAC9D,QAAM,IAAI,KAAK;AACf,QAAM,aAAa,OAAO;AAAA,IACxB,OAAO,QAAQ,YAAY,EACxB,OAAO,CAAC,MAAmC,EAAE,CAAC,MAAM,MAAS,EAC7D,IAAI,CAAC,CAAC,OAAO,OAAO,MAAM;AACzB,YAAM,aAAa,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,SAAS,OAAO,MAAM,CAAC;AAC/E,YAAM,EAAE,EAAE,IAAI,uCAAuC,KAAK,QAAQ,aAAa,CAAC;AAChF,YAAM,SAAS,OAAO;AAAA,QACpB,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,eAAe,MAAM;AACxD,gBAAM,EAAE,GAAAC,GAAE,IAAI,uCAAuC,GAAG,kBAAkB,CAAC;AAC3E,gBAAM,UAA2B,EAAE,UAAU,EAAE,GAAAA,GAAE,GAAG,OAAO,gBAAgB;AAC3E,iBAAO,CAAC,OAAO,OAAO;AAAA,QACxB,CAAC;AAAA,MACH;AACA,aAAO,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,WAAW,GAAG,OAAO,CAAC;AAAA,IAC5E,CAAC;AAAA,EACL;AACA,SAAO,EAAE,UAAU,EAAE,WAAW,EAAE;AACpC;","names":["attributes","p"]}
@@ -1,2 +1,63 @@
1
- export * from "./getNftCollectionMetrics";
1
+ // src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts
2
+ var calculateAllPropertiesDistribution = (array) => {
3
+ const distribution = {};
4
+ array.forEach((item) => {
5
+ for (const property in item) {
6
+ if (Object.prototype.hasOwnProperty.call(item, property)) {
7
+ const value = item[property];
8
+ if (value !== void 0 && value !== null) {
9
+ const valueString = value.toString();
10
+ if (!distribution[property]) {
11
+ distribution[property] = { [valueString]: 1 };
12
+ } else if (!distribution[property][valueString]) {
13
+ ;
14
+ distribution[property][valueString] = 1;
15
+ } else {
16
+ ;
17
+ distribution[property][valueString] += 1;
18
+ }
19
+ }
20
+ }
21
+ }
22
+ });
23
+ return distribution;
24
+ };
25
+
26
+ // src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts
27
+ var calculateBinomialParamsFromProbability = (n, p) => {
28
+ const mean = n * p;
29
+ const variance = n * p * (1 - p);
30
+ const stdDev = Math.sqrt(variance);
31
+ return { mean, p, stdDev, variance };
32
+ };
33
+
34
+ // src/lib/collectionMetrics/getNftCollectionMetrics.ts
35
+ var getNftCollectionMetrics = (nfts) => {
36
+ const traits = nfts.map((nft) => {
37
+ var _a;
38
+ return (_a = nft == null ? void 0 : nft.metadata) == null ? void 0 : _a.attributes;
39
+ }).filter((v) => v !== void 0).map((attributes2) => {
40
+ return Object.fromEntries(attributes2.map((attribute) => [attribute.trait_type, attribute.value]));
41
+ });
42
+ const distribution = calculateAllPropertiesDistribution(traits);
43
+ const n = nfts.length;
44
+ const attributes = Object.fromEntries(
45
+ Object.entries(distribution).filter((v) => v[1] !== void 0).map(([trait, entries]) => {
46
+ const traitCount = Object.values(entries).reduce((prev, curr) => prev + curr, 0);
47
+ const { p } = calculateBinomialParamsFromProbability(nfts.length, traitCount / n);
48
+ const values = Object.fromEntries(
49
+ Object.entries(entries).map(([value, traitValueCount]) => {
50
+ const { p: p2 } = calculateBinomialParamsFromProbability(n, traitValueCount / n);
51
+ const metrics = { binomial: { p: p2 }, count: traitValueCount };
52
+ return [value, metrics];
53
+ })
54
+ );
55
+ return [trait, { metrics: { binomial: { p }, count: traitCount }, values }];
56
+ })
57
+ );
58
+ return { metadata: { attributes } };
59
+ };
60
+ export {
61
+ getNftCollectionMetrics
62
+ };
2
63
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/collectionMetrics/index.ts"],"sourcesContent":["export * from './getNftCollectionMetrics'\n"],"mappings":"AAAA,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts","../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts","../../../../src/lib/collectionMetrics/getNftCollectionMetrics.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n","import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given the number of trials and success probability\n * @param n Number of trials\n * @param p Success probability\n * @returns The binomial distribution parameters\n */\nexport const calculateBinomialParamsFromProbability = (n: number, p: number): BinomialDistributionParameters => {\n // Mean (µ)\n const mean = n * p\n\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n\n return { mean, p, stdDev, variance }\n}\n","import { NftCollectionMetrics, NftTraitMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { NftInfoFields, OpenSeaNftAttribute } from '@xyo-network/crypto-nft-payload-plugin'\n\nimport { calculateAllPropertiesDistribution, calculateBinomialParamsFromProbability } from './lib'\n\ntype TraitDistributionEntry = [string, { [key: string]: number }]\n\nexport const getNftCollectionMetrics = (nfts: NftInfoFields[]): NftCollectionMetrics => {\n const traits = nfts\n .map((nft) => nft?.metadata?.attributes as OpenSeaNftAttribute[] | undefined)\n .filter((v): v is OpenSeaNftAttribute[] => v !== undefined)\n .map((attributes) => {\n return Object.fromEntries(attributes.map((attribute) => [attribute.trait_type, attribute.value]))\n })\n const distribution = calculateAllPropertiesDistribution(traits)\n const n = nfts.length\n const attributes = Object.fromEntries(\n Object.entries(distribution)\n .filter((v): v is TraitDistributionEntry => v[1] !== undefined)\n .map(([trait, entries]) => {\n const traitCount = Object.values(entries).reduce((prev, curr) => prev + curr, 0)\n const { p } = calculateBinomialParamsFromProbability(nfts.length, traitCount / n)\n const values = Object.fromEntries(\n Object.entries(entries).map(([value, traitValueCount]) => {\n const { p } = calculateBinomialParamsFromProbability(n, traitValueCount / n)\n const metrics: NftTraitMetrics = { binomial: { p }, count: traitValueCount }\n return [value, metrics]\n }),\n )\n return [trait, { metrics: { binomial: { p }, count: traitCount }, values }]\n }),\n )\n return { metadata: { attributes } }\n}\n"],"mappings":";AAEO,IAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AChBO,IAAM,yCAAyC,CAAC,GAAW,MAA8C;AAE9G,QAAM,OAAO,IAAI;AAGjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAG9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AAEjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;;;ACZO,IAAM,0BAA0B,CAAC,SAAgD;AACtF,QAAM,SAAS,KACZ,IAAI,CAAC,QAAK;AATf;AASkB,4CAAK,aAAL,mBAAe;AAAA,GAA+C,EAC3E,OAAO,CAAC,MAAkC,MAAM,MAAS,EACzD,IAAI,CAACA,gBAAe;AACnB,WAAO,OAAO,YAAYA,YAAW,IAAI,CAAC,cAAc,CAAC,UAAU,YAAY,UAAU,KAAK,CAAC,CAAC;AAAA,EAClG,CAAC;AACH,QAAM,eAAe,mCAAmC,MAAM;AAC9D,QAAM,IAAI,KAAK;AACf,QAAM,aAAa,OAAO;AAAA,IACxB,OAAO,QAAQ,YAAY,EACxB,OAAO,CAAC,MAAmC,EAAE,CAAC,MAAM,MAAS,EAC7D,IAAI,CAAC,CAAC,OAAO,OAAO,MAAM;AACzB,YAAM,aAAa,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,SAAS,OAAO,MAAM,CAAC;AAC/E,YAAM,EAAE,EAAE,IAAI,uCAAuC,KAAK,QAAQ,aAAa,CAAC;AAChF,YAAM,SAAS,OAAO;AAAA,QACpB,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,eAAe,MAAM;AACxD,gBAAM,EAAE,GAAAC,GAAE,IAAI,uCAAuC,GAAG,kBAAkB,CAAC;AAC3E,gBAAM,UAA2B,EAAE,UAAU,EAAE,GAAAA,GAAE,GAAG,OAAO,gBAAgB;AAC3E,iBAAO,CAAC,OAAO,OAAO;AAAA,QACxB,CAAC;AAAA,MACH;AACA,aAAO,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,WAAW,GAAG,OAAO,CAAC;AAAA,IAC5E,CAAC;AAAA,EACL;AACA,SAAO,EAAE,UAAU,EAAE,WAAW,EAAE;AACpC;","names":["attributes","p"]}
@@ -0,0 +1,3 @@
1
+ import { Distribution } from './distribution';
2
+ export declare const calculateAllPropertiesDistribution: <T>(array: T[]) => Distribution<T>;
3
+ //# sourceMappingURL=calculateAllPropertiesDistribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateAllPropertiesDistribution.d.ts","sourceRoot":"","sources":["../../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,eAAO,MAAM,kCAAkC,oCAsB9C,CAAA"}
@@ -16,12 +16,14 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts
19
21
  var calculateAllPropertiesDistribution_exports = {};
20
22
  __export(calculateAllPropertiesDistribution_exports, {
21
23
  calculateAllPropertiesDistribution: () => calculateAllPropertiesDistribution
22
24
  });
23
25
  module.exports = __toCommonJS(calculateAllPropertiesDistribution_exports);
24
- const calculateAllPropertiesDistribution = (array) => {
26
+ var calculateAllPropertiesDistribution = (array) => {
25
27
  const distribution = {};
26
28
  array.forEach((item) => {
27
29
  for (const property in item) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}
@@ -1,4 +1,5 @@
1
- const calculateAllPropertiesDistribution = (array) => {
1
+ // src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts
2
+ var calculateAllPropertiesDistribution = (array) => {
2
3
  const distribution = {};
3
4
  array.forEach((item) => {
4
5
  for (const property in item) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n"],"mappings":"AAEO,MAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n"],"mappings":";AAEO,IAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}
@@ -0,0 +1,3 @@
1
+ import { Distribution } from './distribution';
2
+ export declare const calculatePropertyDistribution: <T>(array: T[], property: keyof T) => Distribution<T>;
3
+ //# sourceMappingURL=calculatePropertyDistribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculatePropertyDistribution.d.ts","sourceRoot":"","sources":["../../../../../src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,eAAO,MAAM,6BAA6B,uDAgBzC,CAAA"}
@@ -16,12 +16,14 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts
19
21
  var calculatePropertyDistribution_exports = {};
20
22
  __export(calculatePropertyDistribution_exports, {
21
23
  calculatePropertyDistribution: () => calculatePropertyDistribution
22
24
  });
23
25
  module.exports = __toCommonJS(calculatePropertyDistribution_exports);
24
- const calculatePropertyDistribution = (array, property) => {
26
+ var calculatePropertyDistribution = (array, property) => {
25
27
  const distribution = {};
26
28
  array.forEach((item) => {
27
29
  const value = item[property];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculatePropertyDistribution = <T>(array: T[], property: keyof T): Distribution<T> => {\n const distribution: Distribution<T> = {}\n array.forEach((item) => {\n const value = item[property]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n })\n return distribution\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,gCAAgC,CAAI,OAAY,aAAuC;AAClG,QAAM,eAAgC,CAAC;AACvC,QAAM,QAAQ,CAAC,SAAS;AACtB,UAAM,QAAQ,KAAK,QAAQ;AAC3B,QAAI,UAAU,UAAa,UAAU,MAAM;AACzC,YAAM,cAAc,MAAM,SAAS;AACnC,UAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,qBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,MAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,QAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,MACrE,OAAO;AACL;AAAC,QAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,MACtE;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculatePropertyDistribution = <T>(array: T[], property: keyof T): Distribution<T> => {\n const distribution: Distribution<T> = {}\n array.forEach((item) => {\n const value = item[property]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n })\n return distribution\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,gCAAgC,CAAI,OAAY,aAAuC;AAClG,QAAM,eAAgC,CAAC;AACvC,QAAM,QAAQ,CAAC,SAAS;AACtB,UAAM,QAAQ,KAAK,QAAQ;AAC3B,QAAI,UAAU,UAAa,UAAU,MAAM;AACzC,YAAM,cAAc,MAAM,SAAS;AACnC,UAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,qBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,MAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,QAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,MACrE,OAAO;AACL;AAAC,QAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,MACtE;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AACT;","names":[]}
@@ -1,4 +1,5 @@
1
- const calculatePropertyDistribution = (array, property) => {
1
+ // src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts
2
+ var calculatePropertyDistribution = (array, property) => {
2
3
  const distribution = {};
3
4
  array.forEach((item) => {
4
5
  const value = item[property];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculatePropertyDistribution = <T>(array: T[], property: keyof T): Distribution<T> => {\n const distribution: Distribution<T> = {}\n array.forEach((item) => {\n const value = item[property]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n })\n return distribution\n}\n"],"mappings":"AAEO,MAAM,gCAAgC,CAAI,OAAY,aAAuC;AAClG,QAAM,eAAgC,CAAC;AACvC,QAAM,QAAQ,CAAC,SAAS;AACtB,UAAM,QAAQ,KAAK,QAAQ;AAC3B,QAAI,UAAU,UAAa,UAAU,MAAM;AACzC,YAAM,cAAc,MAAM,SAAS;AACnC,UAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,qBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,MAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,QAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,MACrE,OAAO;AACL;AAAC,QAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,MACtE;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculatePropertyDistribution = <T>(array: T[], property: keyof T): Distribution<T> => {\n const distribution: Distribution<T> = {}\n array.forEach((item) => {\n const value = item[property]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n })\n return distribution\n}\n"],"mappings":";AAEO,IAAM,gCAAgC,CAAI,OAAY,aAAuC;AAClG,QAAM,eAAgC,CAAC;AACvC,QAAM,QAAQ,CAAC,SAAS;AACtB,UAAM,QAAQ,KAAK,QAAQ;AAC3B,QAAI,UAAU,UAAa,UAAU,MAAM;AACzC,YAAM,cAAc,MAAM,SAAS;AACnC,UAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,qBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,MAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,QAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,MACrE,OAAO;AACL;AAAC,QAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,MACtE;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AACT;","names":[]}
@@ -0,0 +1,6 @@
1
+ export type Distribution<T> = {
2
+ [K in keyof T]?: {
3
+ [value: string]: number;
4
+ };
5
+ };
6
+ //# sourceMappingURL=distribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../../../../src/lib/collectionMetrics/lib/distribution.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;CAC7C,CAAA"}
@@ -12,6 +12,8 @@ var __copyProps = (to, from, except, desc) => {
12
12
  return to;
13
13
  };
14
14
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/lib/collectionMetrics/lib/distribution.ts
15
17
  var distribution_exports = {};
16
18
  module.exports = __toCommonJS(distribution_exports);
17
19
  //# sourceMappingURL=distribution.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/distribution.ts"],"sourcesContent":["export type Distribution<T> = {\n [K in keyof T]?: { [value: string]: number }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/distribution.ts"],"sourcesContent":["export type Distribution<T> = {\n [K in keyof T]?: { [value: string]: number }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,4 @@
1
+ export * from './calculateAllPropertiesDistribution';
2
+ export * from './distribution';
3
+ export * from './probabilityDistributions';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/collectionMetrics/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAA;AACpD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA"}
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
6
10
  var __copyProps = (to, from, except, desc) => {
7
11
  if (from && typeof from === "object" || typeof from === "function") {
8
12
  for (let key of __getOwnPropNames(from))
@@ -11,17 +15,64 @@ var __copyProps = (to, from, except, desc) => {
11
15
  }
12
16
  return to;
13
17
  };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/collectionMetrics/lib/index.ts
16
21
  var lib_exports = {};
22
+ __export(lib_exports, {
23
+ calculateAllPropertiesDistribution: () => calculateAllPropertiesDistribution,
24
+ calculateBinomialParamsFromOutcomes: () => calculateBinomialParamsFromOutcomes,
25
+ calculateBinomialParamsFromProbability: () => calculateBinomialParamsFromProbability
26
+ });
17
27
  module.exports = __toCommonJS(lib_exports);
18
- __reExport(lib_exports, require("./calculateAllPropertiesDistribution"), module.exports);
19
- __reExport(lib_exports, require("./distribution"), module.exports);
20
- __reExport(lib_exports, require("./probabilityDistributions"), module.exports);
28
+
29
+ // src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts
30
+ var calculateAllPropertiesDistribution = (array) => {
31
+ const distribution = {};
32
+ array.forEach((item) => {
33
+ for (const property in item) {
34
+ if (Object.prototype.hasOwnProperty.call(item, property)) {
35
+ const value = item[property];
36
+ if (value !== void 0 && value !== null) {
37
+ const valueString = value.toString();
38
+ if (!distribution[property]) {
39
+ distribution[property] = { [valueString]: 1 };
40
+ } else if (!distribution[property][valueString]) {
41
+ ;
42
+ distribution[property][valueString] = 1;
43
+ } else {
44
+ ;
45
+ distribution[property][valueString] += 1;
46
+ }
47
+ }
48
+ }
49
+ }
50
+ });
51
+ return distribution;
52
+ };
53
+
54
+ // src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.ts
55
+ var calculateBinomialParamsFromOutcomes = (outcomes) => {
56
+ const n = outcomes.length;
57
+ const sum = outcomes.reduce((acc, value) => acc + value, 0);
58
+ const p = sum / n;
59
+ const mean = n * p;
60
+ const variance = n * p * (1 - p);
61
+ const stdDev = Math.sqrt(variance);
62
+ return { mean, p, stdDev, variance };
63
+ };
64
+
65
+ // src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts
66
+ var calculateBinomialParamsFromProbability = (n, p) => {
67
+ const mean = n * p;
68
+ const variance = n * p * (1 - p);
69
+ const stdDev = Math.sqrt(variance);
70
+ return { mean, p, stdDev, variance };
71
+ };
21
72
  // Annotate the CommonJS export names for ESM import in node:
22
73
  0 && (module.exports = {
23
- ...require("./calculateAllPropertiesDistribution"),
24
- ...require("./distribution"),
25
- ...require("./probabilityDistributions")
74
+ calculateAllPropertiesDistribution,
75
+ calculateBinomialParamsFromOutcomes,
76
+ calculateBinomialParamsFromProbability
26
77
  });
27
78
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/index.ts"],"sourcesContent":["export * from './calculateAllPropertiesDistribution'\nexport * from './distribution'\nexport * from './probabilityDistributions'\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,wBAAc,iDAAd;AACA,wBAAc,2BADd;AAEA,wBAAc,uCAFd;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/index.ts","../../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts","../../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.ts","../../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts"],"sourcesContent":["export * from './calculateAllPropertiesDistribution'\nexport * from './distribution'\nexport * from './probabilityDistributions'\n","import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n","import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given a list of outcomes\n * @param outcomes List of outcomes, where 1 is a success and 0 is a failure\n * @returns The mean, standard deviation, and variance of the binomial distribution\n */\nexport const calculateBinomialParamsFromOutcomes = (outcomes: number[]): BinomialDistributionParameters => {\n const n = outcomes.length\n // Calculate p: the proportion of successes\n const sum = outcomes.reduce((acc, value) => acc + value, 0)\n const p = sum / n\n // Mean (µ)\n const mean = n * p\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n return { mean, p, stdDev, variance }\n}\n","import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given the number of trials and success probability\n * @param n Number of trials\n * @param p Success probability\n * @returns The binomial distribution parameters\n */\nexport const calculateBinomialParamsFromProbability = (n: number, p: number): BinomialDistributionParameters => {\n // Mean (µ)\n const mean = n * p\n\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n\n return { mean, p, stdDev, variance }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,IAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;ACjBO,IAAM,sCAAsC,CAAC,aAAuD;AACzG,QAAM,IAAI,SAAS;AAEnB,QAAM,MAAM,SAAS,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC;AAC1D,QAAM,IAAI,MAAM;AAEhB,QAAM,OAAO,IAAI;AAEjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAE9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AACjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;;;ACXO,IAAM,yCAAyC,CAAC,GAAW,MAA8C;AAE9G,QAAM,OAAO,IAAI;AAGjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAG9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AAEjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;","names":[]}
@@ -1,4 +1,49 @@
1
- export * from "./calculateAllPropertiesDistribution";
2
- export * from "./distribution";
3
- export * from "./probabilityDistributions";
1
+ // src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts
2
+ var calculateAllPropertiesDistribution = (array) => {
3
+ const distribution = {};
4
+ array.forEach((item) => {
5
+ for (const property in item) {
6
+ if (Object.prototype.hasOwnProperty.call(item, property)) {
7
+ const value = item[property];
8
+ if (value !== void 0 && value !== null) {
9
+ const valueString = value.toString();
10
+ if (!distribution[property]) {
11
+ distribution[property] = { [valueString]: 1 };
12
+ } else if (!distribution[property][valueString]) {
13
+ ;
14
+ distribution[property][valueString] = 1;
15
+ } else {
16
+ ;
17
+ distribution[property][valueString] += 1;
18
+ }
19
+ }
20
+ }
21
+ }
22
+ });
23
+ return distribution;
24
+ };
25
+
26
+ // src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.ts
27
+ var calculateBinomialParamsFromOutcomes = (outcomes) => {
28
+ const n = outcomes.length;
29
+ const sum = outcomes.reduce((acc, value) => acc + value, 0);
30
+ const p = sum / n;
31
+ const mean = n * p;
32
+ const variance = n * p * (1 - p);
33
+ const stdDev = Math.sqrt(variance);
34
+ return { mean, p, stdDev, variance };
35
+ };
36
+
37
+ // src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts
38
+ var calculateBinomialParamsFromProbability = (n, p) => {
39
+ const mean = n * p;
40
+ const variance = n * p * (1 - p);
41
+ const stdDev = Math.sqrt(variance);
42
+ return { mean, p, stdDev, variance };
43
+ };
44
+ export {
45
+ calculateAllPropertiesDistribution,
46
+ calculateBinomialParamsFromOutcomes,
47
+ calculateBinomialParamsFromProbability
48
+ };
4
49
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/index.ts"],"sourcesContent":["export * from './calculateAllPropertiesDistribution'\nexport * from './distribution'\nexport * from './probabilityDistributions'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts","../../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.ts","../../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromProbability.ts"],"sourcesContent":["import { Distribution } from './distribution'\n\nexport const calculateAllPropertiesDistribution = <T>(array: T[]): Distribution<T> => {\n const distribution: Distribution<T> = {}\n\n array.forEach((item) => {\n for (const property in item) {\n if (Object.prototype.hasOwnProperty.call(item, property)) {\n const value = item[property as keyof T]\n if (value !== undefined && value !== null) {\n const valueString = value.toString()\n if (!distribution[property]) {\n distribution[property] = { [valueString]: 1 }\n } else if (!distribution[property]![valueString]) {\n ;(distribution[property] as Record<string, number>)[valueString] = 1\n } else {\n ;(distribution[property] as Record<string, number>)[valueString] += 1\n }\n }\n }\n }\n })\n\n return distribution\n}\n","import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given a list of outcomes\n * @param outcomes List of outcomes, where 1 is a success and 0 is a failure\n * @returns The mean, standard deviation, and variance of the binomial distribution\n */\nexport const calculateBinomialParamsFromOutcomes = (outcomes: number[]): BinomialDistributionParameters => {\n const n = outcomes.length\n // Calculate p: the proportion of successes\n const sum = outcomes.reduce((acc, value) => acc + value, 0)\n const p = sum / n\n // Mean (µ)\n const mean = n * p\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n return { mean, p, stdDev, variance }\n}\n","import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given the number of trials and success probability\n * @param n Number of trials\n * @param p Success probability\n * @returns The binomial distribution parameters\n */\nexport const calculateBinomialParamsFromProbability = (n: number, p: number): BinomialDistributionParameters => {\n // Mean (µ)\n const mean = n * p\n\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n\n return { mean, p, stdDev, variance }\n}\n"],"mappings":";AAEO,IAAM,qCAAqC,CAAI,UAAgC;AACpF,QAAM,eAAgC,CAAC;AAEvC,QAAM,QAAQ,CAAC,SAAS;AACtB,eAAW,YAAY,MAAM;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG;AACxD,cAAM,QAAQ,KAAK,QAAmB;AACtC,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAM,cAAc,MAAM,SAAS;AACnC,cAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,yBAAa,QAAQ,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;AAAA,UAC9C,WAAW,CAAC,aAAa,QAAQ,EAAG,WAAW,GAAG;AAChD;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,IAAI;AAAA,UACrE,OAAO;AACL;AAAC,YAAC,aAAa,QAAQ,EAA6B,WAAW,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;ACjBO,IAAM,sCAAsC,CAAC,aAAuD;AACzG,QAAM,IAAI,SAAS;AAEnB,QAAM,MAAM,SAAS,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC;AAC1D,QAAM,IAAI,MAAM;AAEhB,QAAM,OAAO,IAAI;AAEjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAE9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AACjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;;;ACXO,IAAM,yCAAyC,CAAC,GAAW,MAA8C;AAE9G,QAAM,OAAO,IAAI;AAGjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAG9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AAEjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;","names":[]}
@@ -0,0 +1,8 @@
1
+ import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ /**
3
+ * Calculates the parameters of a binomial distribution given a list of outcomes
4
+ * @param outcomes List of outcomes, where 1 is a success and 0 is a failure
5
+ * @returns The mean, standard deviation, and variance of the binomial distribution
6
+ */
7
+ export declare const calculateBinomialParamsFromOutcomes: (outcomes: number[]) => BinomialDistributionParameters;
8
+ //# sourceMappingURL=calculateBinomialParamsFromOutcomes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateBinomialParamsFromOutcomes.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAA;AAElG;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,aAAc,MAAM,EAAE,KAAG,8BAYxE,CAAA"}
@@ -16,12 +16,14 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.ts
19
21
  var calculateBinomialParamsFromOutcomes_exports = {};
20
22
  __export(calculateBinomialParamsFromOutcomes_exports, {
21
23
  calculateBinomialParamsFromOutcomes: () => calculateBinomialParamsFromOutcomes
22
24
  });
23
25
  module.exports = __toCommonJS(calculateBinomialParamsFromOutcomes_exports);
24
- const calculateBinomialParamsFromOutcomes = (outcomes) => {
26
+ var calculateBinomialParamsFromOutcomes = (outcomes) => {
25
27
  const n = outcomes.length;
26
28
  const sum = outcomes.reduce((acc, value) => acc + value, 0);
27
29
  const p = sum / n;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.ts"],"sourcesContent":["import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given a list of outcomes\n * @param outcomes List of outcomes, where 1 is a success and 0 is a failure\n * @returns The mean, standard deviation, and variance of the binomial distribution\n */\nexport const calculateBinomialParamsFromOutcomes = (outcomes: number[]): BinomialDistributionParameters => {\n const n = outcomes.length\n // Calculate p: the proportion of successes\n const sum = outcomes.reduce((acc, value) => acc + value, 0)\n const p = sum / n\n // Mean (µ)\n const mean = n * p\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n return { mean, p, stdDev, variance }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,MAAM,sCAAsC,CAAC,aAAuD;AACzG,QAAM,IAAI,SAAS;AAEnB,QAAM,MAAM,SAAS,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC;AAC1D,QAAM,IAAI,MAAM;AAEhB,QAAM,OAAO,IAAI;AAEjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAE9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AACjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/lib/collectionMetrics/lib/probabilityDistributions/binomial/calculateBinomialParamsFromOutcomes.ts"],"sourcesContent":["import { BinomialDistributionParameters } from '@xyo-network/crypto-nft-collection-payload-plugin'\n\n/**\n * Calculates the parameters of a binomial distribution given a list of outcomes\n * @param outcomes List of outcomes, where 1 is a success and 0 is a failure\n * @returns The mean, standard deviation, and variance of the binomial distribution\n */\nexport const calculateBinomialParamsFromOutcomes = (outcomes: number[]): BinomialDistributionParameters => {\n const n = outcomes.length\n // Calculate p: the proportion of successes\n const sum = outcomes.reduce((acc, value) => acc + value, 0)\n const p = sum / n\n // Mean (µ)\n const mean = n * p\n // Variance (σ^2)\n const variance = n * p * (1 - p)\n // Standard Deviation (σ)\n const stdDev = Math.sqrt(variance)\n return { mean, p, stdDev, variance }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,IAAM,sCAAsC,CAAC,aAAuD;AACzG,QAAM,IAAI,SAAS;AAEnB,QAAM,MAAM,SAAS,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC;AAC1D,QAAM,IAAI,MAAM;AAEhB,QAAM,OAAO,IAAI;AAEjB,QAAM,WAAW,IAAI,KAAK,IAAI;AAE9B,QAAM,SAAS,KAAK,KAAK,QAAQ;AACjC,SAAO,EAAE,MAAM,GAAG,QAAQ,SAAS;AACrC;","names":[]}