@cieloazul310/jclub-financial-statistics 0.0.1-alpha.6 → 0.0.1-alpha.8

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 (64) hide show
  1. package/dist/dataset/2005-J1.json +141 -141
  2. package/dist/dataset/2005-J2.json +95 -95
  3. package/dist/dataset/2006-J1.json +153 -153
  4. package/dist/dataset/2006-J2.json +108 -108
  5. package/dist/dataset/2007-J1.json +144 -144
  6. package/dist/dataset/2007-J2.json +117 -117
  7. package/dist/dataset/2008-J1.json +153 -153
  8. package/dist/dataset/2008-J2.json +126 -126
  9. package/dist/dataset/2009-J1.json +153 -153
  10. package/dist/dataset/2009-J2.json +153 -153
  11. package/dist/dataset/2010-J1.json +153 -153
  12. package/dist/dataset/2010-J2.json +162 -162
  13. package/dist/dataset/2011-J1.json +162 -162
  14. package/dist/dataset/2011-J2.json +162 -162
  15. package/dist/dataset/2012-J1.json +153 -153
  16. package/dist/dataset/2012-J2.json +189 -189
  17. package/dist/dataset/2013-J1.json +153 -153
  18. package/dist/dataset/2013-J2.json +189 -189
  19. package/dist/dataset/2014-J1.json +153 -153
  20. package/dist/dataset/2014-J2.json +189 -189
  21. package/dist/dataset/2014-J3.json +99 -99
  22. package/dist/dataset/2015-J1.json +153 -153
  23. package/dist/dataset/2015-J2.json +189 -189
  24. package/dist/dataset/2015-J3.json +108 -108
  25. package/dist/dataset/2016-J1.json +153 -153
  26. package/dist/dataset/2016-J2.json +189 -189
  27. package/dist/dataset/2016-J3.json +117 -117
  28. package/dist/dataset/2017-J1.json +153 -153
  29. package/dist/dataset/2017-J2.json +189 -189
  30. package/dist/dataset/2017-J3.json +126 -126
  31. package/dist/dataset/2018-J1.json +153 -153
  32. package/dist/dataset/2018-J2.json +189 -189
  33. package/dist/dataset/2018-J3.json +126 -126
  34. package/dist/dataset/2019-J1.json +153 -153
  35. package/dist/dataset/2019-J2.json +189 -189
  36. package/dist/dataset/2019-J3.json +135 -135
  37. package/dist/dataset/2020-J1.json +144 -144
  38. package/dist/dataset/2020-J2.json +198 -198
  39. package/dist/dataset/2020-J3.json +144 -144
  40. package/dist/dataset/2021-J1.json +162 -162
  41. package/dist/dataset/2021-J2.json +198 -198
  42. package/dist/dataset/2021-J3.json +135 -135
  43. package/dist/dataset/2022-J1.json +153 -153
  44. package/dist/dataset/2022-J2.json +189 -189
  45. package/dist/dataset/2022-J3.json +162 -162
  46. package/dist/dataset/2023-J1.json +144 -144
  47. package/dist/dataset/2023-J2.json +198 -198
  48. package/dist/dataset/2023-J3.json +171 -171
  49. package/dist/dataset/2024-J1.json +171 -171
  50. package/dist/dataset/2024-J2.json +162 -162
  51. package/dist/dataset/2024-J3.json +171 -171
  52. package/dist/index.cjs +24 -10
  53. package/dist/index.d.cts +6 -5
  54. package/dist/index.d.cts.map +1 -1
  55. package/dist/index.d.mts +6 -5
  56. package/dist/index.d.mts.map +1 -1
  57. package/dist/index.mjs +24 -10
  58. package/dist/index.mjs.map +1 -1
  59. package/dist/type.d.cts +3 -3
  60. package/dist/type.d.cts.map +1 -1
  61. package/dist/type.d.mts +3 -3
  62. package/dist/type.d.mts.map +1 -1
  63. package/dist/type.mjs.map +1 -1
  64. package/package.json +7 -5
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- const require_type = require('./type.cjs');
2
1
  let fs_promises = require("fs/promises");
3
2
  let path = require("path");
3
+ let _cieloazul310_jclub_financial_utils = require("@cieloazul310/jclub-financial-utils");
4
4
 
5
5
  //#region src/index.ts
6
6
  async function findDatasetDir() {
@@ -68,7 +68,7 @@ async function getStatistics(year, category, key) {
68
68
  stddev: entry.stats?.deviation ?? null
69
69
  };
70
70
  }
71
- const DEFAULT_YEARS = Array.from({ length: 20 }, (_, i) => 2005 + i);
71
+ const DEFAULT_YEARS = (0, _cieloazul310_jclub_financial_utils.getAllYears)().map(({ year }) => year);
72
72
  /**
73
73
  * Returns an array of statistics for a single category across multiple years.
74
74
  * Example: getCategoryYearSeries("J2", key) -> [Stats|null for 2005, 2006, ...]
@@ -81,19 +81,33 @@ async function getCategoryYearSeries(category, key) {
81
81
  }
82
82
  return result;
83
83
  }
84
- /**
85
- * Returns statistics for a single year as an object keyed by category.
86
- * If a category has no data, its value will be null.
87
- */
88
- async function getStatsByYear(year, key) {
84
+ async function getStatsByYear(year, keys) {
85
+ const categories = (0, _cieloazul310_jclub_financial_utils.getAllYears)().find((yearInfo) => yearInfo.year === year)?.categories;
86
+ if (!categories) return null;
87
+ if (typeof keys === "string") {
88
+ const out$1 = {
89
+ J1: null,
90
+ J2: null,
91
+ J3: null
92
+ };
93
+ for (const cat of categories) {
94
+ const stats = await getStatistics(year, cat, keys);
95
+ out$1[cat] = stats.totalCount === 0 ? null : stats;
96
+ }
97
+ return out$1;
98
+ }
89
99
  const out = {
90
100
  J1: null,
91
101
  J2: null,
92
102
  J3: null
93
103
  };
94
- for (const cat of require_type.CATEGORIES) {
95
- const stats = await getStatistics(year, cat, key);
96
- out[cat] = stats.totalCount === 0 ? null : stats;
104
+ for (const cat of categories) {
105
+ const statsByCategory = {};
106
+ for (const key of keys) {
107
+ const stats = await getStatistics(year, cat, key);
108
+ statsByCategory[key] = stats.totalCount === 0 ? null : stats;
109
+ }
110
+ out[cat] = statsByCategory;
97
111
  }
98
112
  return out;
99
113
  }
package/dist/index.d.cts CHANGED
@@ -1,9 +1,9 @@
1
- import { Category, Fields, ValueItem } from "./type.cjs";
1
+ import { Fields, StatsCategory, ValueItem } from "./type.cjs";
2
2
 
3
3
  //#region src/index.d.ts
4
4
  type StatsResult = {
5
5
  year: number;
6
- category: Category;
6
+ category: StatsCategory;
7
7
  key: Fields;
8
8
  totalCount: number;
9
9
  values: ValueItem[];
@@ -14,18 +14,19 @@ type StatsResult = {
14
14
  variance: number | null;
15
15
  stddev: number | null;
16
16
  };
17
- declare function getStatistics(year: number, category: Category, key: Fields): Promise<StatsResult>;
17
+ declare function getStatistics(year: number, category: StatsCategory, key: Fields): Promise<StatsResult>;
18
18
  type Year = number;
19
19
  /**
20
20
  * Returns an array of statistics for a single category across multiple years.
21
21
  * Example: getCategoryYearSeries("J2", key) -> [Stats|null for 2005, 2006, ...]
22
22
  */
23
- declare function getCategoryYearSeries(category: Category, key: Fields): Promise<(StatsResult | null)[]>;
23
+ declare function getCategoryYearSeries(category: StatsCategory, key: Fields): Promise<(StatsResult | null)[]>;
24
24
  /**
25
25
  * Returns statistics for a single year as an object keyed by category.
26
26
  * If a category has no data, its value will be null.
27
27
  */
28
- declare function getStatsByYear(year: Year, key: Fields): Promise<Record<Category, StatsResult | null>>;
28
+ declare function getStatsByYear(year: Year, keys: Fields): Promise<Record<StatsCategory, StatsResult | null> | null>;
29
+ declare function getStatsByYear(year: Year, keys: Fields[]): Promise<Record<StatsCategory, Record<Fields, StatsResult | null>> | null>;
29
30
  //#endregion
30
31
  export { StatsResult, Year, getCategoryYearSeries, getStatistics, getStatsByYear };
31
32
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;KAIY,WAAA;;EAAA,QAAA,EAEA,QAFW;EAEX,GAAA,EACL,MADK;EACL,UAAA,EAAA,MAAA;EAEG,MAAA,EAAA,SAAA,EAAA;EAAS,GAAA,EAAA,MAAA;EAsCG,OAAA,EAAA,MAAA,GAAa,IAAA;EAEvB,GAAA,EAAA,MAAA,GAAA,IAAA;EACL,GAAA,EAAA,MAAA,GAAA,IAAA;EACI,QAAA,EAAA,MAAA,GAAA,IAAA;EAAR,MAAA,EAAA,MAAA,GAAA,IAAA;CAAO;AA2DE,iBA/DU,aAAA,CA+DN,IAAA,EAAA,MAAA,EAAA,QAAA,EA7DJ,QA6DI,EAAA,GAAA,EA5DT,MA4DS,CAAA,EA3Db,OA2Da,CA3DL,WA2DK,CAAA;AAQM,KARV,IAAA,GAQU,MAAA;;;;;AAGZ,iBAHY,qBAAA,CAGZ,QAAA,EAFE,QAEF,EAAA,GAAA,EADH,MACG,CAAA,EAAP,OAAO,CAAA,CAAE,WAAF,GAAA,IAAA,CAAA,EAAA,CAAA;AAaV;;;;AAG4B,iBAHN,cAAA,CAGM,IAAA,EAFpB,IAEoB,EAAA,GAAA,EADrB,MACqB,CAAA,EAAzB,OAAyB,CAAjB,MAAiB,CAAV,QAAU,EAAA,WAAA,GAAA,IAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;KAKY,WAAA;;EAAA,QAAA,EAEA,aAFW;EAEX,GAAA,EACL,MADK;EACL,UAAA,EAAA,MAAA;EAEG,MAAA,EAAA,SAAA,EAAA;EAAS,GAAA,EAAA,MAAA;EAsCG,OAAA,EAAA,MAAA,GAAa,IAAA;EAEvB,GAAA,EAAA,MAAA,GAAA,IAAA;EACL,GAAA,EAAA,MAAA,GAAA,IAAA;EACI,QAAA,EAAA,MAAA,GAAA,IAAA;EAAR,MAAA,EAAA,MAAA,GAAA,IAAA;CAAO;AA2DE,iBA/DU,aAAA,CA+DN,IAAA,EAAA,MAAA,EAAA,QAAA,EA7DJ,aA6DI,EAAA,GAAA,EA5DT,MA4DS,CAAA,EA3Db,OA2Da,CA3DL,WA2DK,CAAA;AAQM,KARV,IAAA,GAQU,MAAA;;;;;AAGZ,iBAHY,qBAAA,CAGZ,QAAA,EAFE,aAEF,EAAA,GAAA,EADH,MACG,CAAA,EAAP,OAAO,CAAA,CAAE,WAAF,GAAA,IAAA,CAAA,EAAA,CAAA;AAaV;;;;AAGiC,iBAHjB,cAAA,CAGiB,IAAA,EAFzB,IAEyB,EAAA,IAAA,EADzB,MACyB,CAAA,EAA9B,OAA8B,CAAtB,MAAsB,CAAf,aAAe,EAAA,WAAA,GAAA,IAAA,CAAA,GAAA,IAAA,CAAA;AAAtB,iBAEK,cAAA,CAFL,IAAA,EAGH,IAHG,EAAA,IAAA,EAIH,MAJG,EAAA,CAAA,EAKR,OALQ,CAKA,MALA,CAKO,aALP,EAKsB,MALtB,CAK6B,MAL7B,EAKqC,WALrC,GAAA,IAAA,CAAA,CAAA,GAAA,IAAA,CAAA"}
package/dist/index.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { Category, Fields, ValueItem } from "./type.mjs";
1
+ import { Fields, StatsCategory, ValueItem } from "./type.mjs";
2
2
 
3
3
  //#region src/index.d.ts
4
4
  type StatsResult = {
5
5
  year: number;
6
- category: Category;
6
+ category: StatsCategory;
7
7
  key: Fields;
8
8
  totalCount: number;
9
9
  values: ValueItem[];
@@ -14,18 +14,19 @@ type StatsResult = {
14
14
  variance: number | null;
15
15
  stddev: number | null;
16
16
  };
17
- declare function getStatistics(year: number, category: Category, key: Fields): Promise<StatsResult>;
17
+ declare function getStatistics(year: number, category: StatsCategory, key: Fields): Promise<StatsResult>;
18
18
  type Year = number;
19
19
  /**
20
20
  * Returns an array of statistics for a single category across multiple years.
21
21
  * Example: getCategoryYearSeries("J2", key) -> [Stats|null for 2005, 2006, ...]
22
22
  */
23
- declare function getCategoryYearSeries(category: Category, key: Fields): Promise<(StatsResult | null)[]>;
23
+ declare function getCategoryYearSeries(category: StatsCategory, key: Fields): Promise<(StatsResult | null)[]>;
24
24
  /**
25
25
  * Returns statistics for a single year as an object keyed by category.
26
26
  * If a category has no data, its value will be null.
27
27
  */
28
- declare function getStatsByYear(year: Year, key: Fields): Promise<Record<Category, StatsResult | null>>;
28
+ declare function getStatsByYear(year: Year, keys: Fields): Promise<Record<StatsCategory, StatsResult | null> | null>;
29
+ declare function getStatsByYear(year: Year, keys: Fields[]): Promise<Record<StatsCategory, Record<Fields, StatsResult | null>> | null>;
29
30
  //#endregion
30
31
  export { StatsResult, Year, getCategoryYearSeries, getStatistics, getStatsByYear };
31
32
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;KAIY,WAAA;;EAAA,QAAA,EAEA,QAFW;EAEX,GAAA,EACL,MADK;EACL,UAAA,EAAA,MAAA;EAEG,MAAA,EAAA,SAAA,EAAA;EAAS,GAAA,EAAA,MAAA;EAsCG,OAAA,EAAA,MAAA,GAAa,IAAA;EAEvB,GAAA,EAAA,MAAA,GAAA,IAAA;EACL,GAAA,EAAA,MAAA,GAAA,IAAA;EACI,QAAA,EAAA,MAAA,GAAA,IAAA;EAAR,MAAA,EAAA,MAAA,GAAA,IAAA;CAAO;AA2DE,iBA/DU,aAAA,CA+DN,IAAA,EAAA,MAAA,EAAA,QAAA,EA7DJ,QA6DI,EAAA,GAAA,EA5DT,MA4DS,CAAA,EA3Db,OA2Da,CA3DL,WA2DK,CAAA;AAQM,KARV,IAAA,GAQU,MAAA;;;;;AAGZ,iBAHY,qBAAA,CAGZ,QAAA,EAFE,QAEF,EAAA,GAAA,EADH,MACG,CAAA,EAAP,OAAO,CAAA,CAAE,WAAF,GAAA,IAAA,CAAA,EAAA,CAAA;AAaV;;;;AAG4B,iBAHN,cAAA,CAGM,IAAA,EAFpB,IAEoB,EAAA,GAAA,EADrB,MACqB,CAAA,EAAzB,OAAyB,CAAjB,MAAiB,CAAV,QAAU,EAAA,WAAA,GAAA,IAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;KAKY,WAAA;;EAAA,QAAA,EAEA,aAFW;EAEX,GAAA,EACL,MADK;EACL,UAAA,EAAA,MAAA;EAEG,MAAA,EAAA,SAAA,EAAA;EAAS,GAAA,EAAA,MAAA;EAsCG,OAAA,EAAA,MAAA,GAAa,IAAA;EAEvB,GAAA,EAAA,MAAA,GAAA,IAAA;EACL,GAAA,EAAA,MAAA,GAAA,IAAA;EACI,QAAA,EAAA,MAAA,GAAA,IAAA;EAAR,MAAA,EAAA,MAAA,GAAA,IAAA;CAAO;AA2DE,iBA/DU,aAAA,CA+DN,IAAA,EAAA,MAAA,EAAA,QAAA,EA7DJ,aA6DI,EAAA,GAAA,EA5DT,MA4DS,CAAA,EA3Db,OA2Da,CA3DL,WA2DK,CAAA;AAQM,KARV,IAAA,GAQU,MAAA;;;;;AAGZ,iBAHY,qBAAA,CAGZ,QAAA,EAFE,aAEF,EAAA,GAAA,EADH,MACG,CAAA,EAAP,OAAO,CAAA,CAAE,WAAF,GAAA,IAAA,CAAA,EAAA,CAAA;AAaV;;;;AAGiC,iBAHjB,cAAA,CAGiB,IAAA,EAFzB,IAEyB,EAAA,IAAA,EADzB,MACyB,CAAA,EAA9B,OAA8B,CAAtB,MAAsB,CAAf,aAAe,EAAA,WAAA,GAAA,IAAA,CAAA,GAAA,IAAA,CAAA;AAAtB,iBAEK,cAAA,CAFL,IAAA,EAGH,IAHG,EAAA,IAAA,EAIH,MAJG,EAAA,CAAA,EAKR,OALQ,CAKA,MALA,CAKO,aALP,EAKsB,MALtB,CAK6B,MAL7B,EAKqC,WALrC,GAAA,IAAA,CAAA,CAAA,GAAA,IAAA,CAAA"}
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { CATEGORIES } from "./type.mjs";
2
1
  import path from "node:path";
3
2
  import { fileURLToPath } from "node:url";
4
3
  import { readFile, stat } from "fs/promises";
5
4
  import { join, resolve } from "path";
5
+ import { getAllYears } from "@cieloazul310/jclub-financial-utils";
6
6
 
7
7
  //#region ../../node_modules/tsdown/esm-shims.js
8
8
  const getFilename = () => fileURLToPath(import.meta.url);
@@ -76,7 +76,7 @@ async function getStatistics(year, category, key) {
76
76
  stddev: entry.stats?.deviation ?? null
77
77
  };
78
78
  }
79
- const DEFAULT_YEARS = Array.from({ length: 20 }, (_, i) => 2005 + i);
79
+ const DEFAULT_YEARS = getAllYears().map(({ year }) => year);
80
80
  /**
81
81
  * Returns an array of statistics for a single category across multiple years.
82
82
  * Example: getCategoryYearSeries("J2", key) -> [Stats|null for 2005, 2006, ...]
@@ -89,19 +89,33 @@ async function getCategoryYearSeries(category, key) {
89
89
  }
90
90
  return result;
91
91
  }
92
- /**
93
- * Returns statistics for a single year as an object keyed by category.
94
- * If a category has no data, its value will be null.
95
- */
96
- async function getStatsByYear(year, key) {
92
+ async function getStatsByYear(year, keys) {
93
+ const categories = getAllYears().find((yearInfo) => yearInfo.year === year)?.categories;
94
+ if (!categories) return null;
95
+ if (typeof keys === "string") {
96
+ const out$1 = {
97
+ J1: null,
98
+ J2: null,
99
+ J3: null
100
+ };
101
+ for (const cat of categories) {
102
+ const stats = await getStatistics(year, cat, keys);
103
+ out$1[cat] = stats.totalCount === 0 ? null : stats;
104
+ }
105
+ return out$1;
106
+ }
97
107
  const out = {
98
108
  J1: null,
99
109
  J2: null,
100
110
  J3: null
101
111
  };
102
- for (const cat of CATEGORIES) {
103
- const stats = await getStatistics(year, cat, key);
104
- out[cat] = stats.totalCount === 0 ? null : stats;
112
+ for (const cat of categories) {
113
+ const statsByCategory = {};
114
+ for (const key of keys) {
115
+ const stats = await getStatistics(year, cat, key);
116
+ statsByCategory[key] = stats.totalCount === 0 ? null : stats;
117
+ }
118
+ out[cat] = statsByCategory;
105
119
  }
106
120
  return out;
107
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["values: ValueItem[]","DEFAULT_YEARS: Year[]","result: (StatsResult | null)[]","out: Record<Category, StatsResult | null>"],"sources":["../../../node_modules/tsdown/esm-shims.js","../src/index.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { stat, readFile } from \"fs/promises\";\nimport { resolve, join } from \"path\";\nimport { CATEGORIES, type Category, type Fields, type ValueItem } from \"./type\";\n\nexport type StatsResult = {\n year: number;\n category: Category;\n key: Fields;\n totalCount: number;\n values: ValueItem[];\n sum: number;\n average: number | null;\n min: number | null;\n max: number | null;\n variance: number | null;\n stddev: number | null;\n};\n\nasync function findDatasetDir(): Promise<string> {\n const candidates = [\n resolve(__dirname, \"dataset\"), // when running from dist\n resolve(__dirname, \"../dist/dataset\"), // when running from src\n resolve(process.cwd(), \"packages/statistics/dist/dataset\"),\n resolve(process.cwd(), \"dist/dataset\"),\n ];\n for (const c of candidates) {\n try {\n const s = await stat(c);\n if (s.isDirectory()) return c;\n } catch (err) {\n // ignore\n }\n }\n throw new Error(\"dataset directory not found (looked in candidates)\");\n}\n\nasync function loadStatsFile(year: number, category: string) {\n const dir = await findDatasetDir();\n const filename = join(dir, `${year}-${category}.json`);\n try {\n const raw = await readFile(filename, \"utf8\");\n return JSON.parse(raw) as any;\n } catch (err) {\n return null;\n }\n}\n\nexport async function getStatistics(\n year: number,\n category: Category,\n key: Fields,\n): Promise<StatsResult> {\n const file = await loadStatsFile(year, category);\n if (!file) {\n return {\n year,\n category,\n key,\n totalCount: 0,\n values: [],\n sum: 0,\n average: null,\n min: null,\n max: null,\n variance: null,\n stddev: null,\n };\n }\n\n const entry = file.stats?.[key as string];\n if (!entry) {\n return {\n year,\n category,\n key,\n totalCount: 0,\n values: [],\n sum: 0,\n average: null,\n min: null,\n max: null,\n variance: null,\n stddev: null,\n };\n }\n\n const values: ValueItem[] = entry.values ?? [];\n const totalCount: number = entry.totalCount ?? values.length;\n const sum: number = entry.stats?.sum ?? 0;\n const average: number | null = entry.stats?.average ?? null;\n const min: number | null = entry.stats?.min ?? null;\n const max: number | null = entry.stats?.max ?? null;\n const variance: number | null = entry.stats?.variance ?? null;\n const stddev: number | null = entry.stats?.deviation ?? null;\n\n return {\n year,\n category,\n key,\n totalCount,\n values,\n sum,\n average,\n min,\n max,\n variance,\n stddev,\n };\n}\n\nexport type Year = number;\n\nconst DEFAULT_YEARS: Year[] = Array.from({ length: 20 }, (_, i) => 2005 + i);\n\n/**\n * Returns an array of statistics for a single category across multiple years.\n * Example: getCategoryYearSeries(\"J2\", key) -> [Stats|null for 2005, 2006, ...]\n */\nexport async function getCategoryYearSeries(\n category: Category,\n key: Fields,\n): Promise<(StatsResult | null)[]> {\n const result: (StatsResult | null)[] = [];\n for (const year of DEFAULT_YEARS) {\n const stats = await getStatistics(year, category, key);\n result.push(stats.totalCount === 0 ? null : stats);\n }\n return result;\n}\n\n/**\n * Returns statistics for a single year as an object keyed by category.\n * If a category has no data, its value will be null.\n */\nexport async function getStatsByYear(\n year: Year,\n key: Fields,\n): Promise<Record<Category, StatsResult | null>> {\n const out: Record<Category, StatsResult | null> = {\n J1: null,\n J2: null,\n J3: null,\n } as any;\n for (const cat of CATEGORIES) {\n const stats = await getStatistics(year, cat as Category, key);\n out[cat] = stats.totalCount === 0 ? null : stats;\n }\n return out;\n}\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;AAIA,MAAM,oBAAoB,cAAc,OAAO,KAAK,IAAI;AACxD,MAAM,mBAAmB,KAAK,QAAQ,aAAa,CAAC;AAEpD,MAAa,YAA4B,4BAAY;;;;ACWrD,eAAe,iBAAkC;CAC/C,MAAM,aAAa;EACjB,QAAQ,WAAW,UAAU;EAC7B,QAAQ,WAAW,kBAAkB;EACrC,QAAQ,QAAQ,KAAK,EAAE,mCAAmC;EAC1D,QAAQ,QAAQ,KAAK,EAAE,eAAe;EACvC;AACD,MAAK,MAAM,KAAK,WACd,KAAI;AAEF,OADU,MAAM,KAAK,EAAE,EACjB,aAAa,CAAE,QAAO;UACrB,KAAK;AAIhB,OAAM,IAAI,MAAM,qDAAqD;;AAGvE,eAAe,cAAc,MAAc,UAAkB;CAE3D,MAAM,WAAW,KADL,MAAM,gBAAgB,EACP,GAAG,KAAK,GAAG,SAAS,OAAO;AACtD,KAAI;EACF,MAAM,MAAM,MAAM,SAAS,UAAU,OAAO;AAC5C,SAAO,KAAK,MAAM,IAAI;UACf,KAAK;AACZ,SAAO;;;AAIX,eAAsB,cACpB,MACA,UACA,KACsB;CACtB,MAAM,OAAO,MAAM,cAAc,MAAM,SAAS;AAChD,KAAI,CAAC,KACH,QAAO;EACL;EACA;EACA;EACA,YAAY;EACZ,QAAQ,EAAE;EACV,KAAK;EACL,SAAS;EACT,KAAK;EACL,KAAK;EACL,UAAU;EACV,QAAQ;EACT;CAGH,MAAM,QAAQ,KAAK,QAAQ;AAC3B,KAAI,CAAC,MACH,QAAO;EACL;EACA;EACA;EACA,YAAY;EACZ,QAAQ,EAAE;EACV,KAAK;EACL,SAAS;EACT,KAAK;EACL,KAAK;EACL,UAAU;EACV,QAAQ;EACT;CAGH,MAAMA,SAAsB,MAAM,UAAU,EAAE;AAS9C,QAAO;EACL;EACA;EACA;EACA,YAZyB,MAAM,cAAc,OAAO;EAapD;EACA,KAbkB,MAAM,OAAO,OAAO;EActC,SAb6B,MAAM,OAAO,WAAW;EAcrD,KAbyB,MAAM,OAAO,OAAO;EAc7C,KAbyB,MAAM,OAAO,OAAO;EAc7C,UAb8B,MAAM,OAAO,YAAY;EAcvD,QAb4B,MAAM,OAAO,aAAa;EAcvD;;AAKH,MAAMC,gBAAwB,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,GAAG,MAAM,OAAO,EAAE;;;;;AAM5E,eAAsB,sBACpB,UACA,KACiC;CACjC,MAAMC,SAAiC,EAAE;AACzC,MAAK,MAAM,QAAQ,eAAe;EAChC,MAAM,QAAQ,MAAM,cAAc,MAAM,UAAU,IAAI;AACtD,SAAO,KAAK,MAAM,eAAe,IAAI,OAAO,MAAM;;AAEpD,QAAO;;;;;;AAOT,eAAsB,eACpB,MACA,KAC+C;CAC/C,MAAMC,MAA4C;EAChD,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;AACD,MAAK,MAAM,OAAO,YAAY;EAC5B,MAAM,QAAQ,MAAM,cAAc,MAAM,KAAiB,IAAI;AAC7D,MAAI,OAAO,MAAM,eAAe,IAAI,OAAO;;AAE7C,QAAO"}
1
+ {"version":3,"file":"index.mjs","names":["values: ValueItem[]","DEFAULT_YEARS: Year[]","result: (StatsResult | null)[]","out: Record<StatsCategory, StatsResult | null>","out","out: Record<StatsCategory, Record<Fields, StatsResult | null>>","statsByCategory: Record<Fields, StatsResult | null>"],"sources":["../../../node_modules/tsdown/esm-shims.js","../src/index.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { stat, readFile } from \"fs/promises\";\nimport { resolve, join } from \"path\";\nimport { getAllYears } from \"@cieloazul310/jclub-financial-utils\";\nimport type { StatsCategory, Fields, ValueItem } from \"./type\";\n\nexport type StatsResult = {\n year: number;\n category: StatsCategory;\n key: Fields;\n totalCount: number;\n values: ValueItem[];\n sum: number;\n average: number | null;\n min: number | null;\n max: number | null;\n variance: number | null;\n stddev: number | null;\n};\n\nasync function findDatasetDir(): Promise<string> {\n const candidates = [\n resolve(__dirname, \"dataset\"), // when running from dist\n resolve(__dirname, \"../dist/dataset\"), // when running from src\n resolve(process.cwd(), \"packages/statistics/dist/dataset\"),\n resolve(process.cwd(), \"dist/dataset\"),\n ];\n for (const c of candidates) {\n try {\n const s = await stat(c);\n if (s.isDirectory()) return c;\n } catch (err) {\n // ignore\n }\n }\n throw new Error(\"dataset directory not found (looked in candidates)\");\n}\n\nasync function loadStatsFile(year: number, category: string) {\n const dir = await findDatasetDir();\n const filename = join(dir, `${year}-${category}.json`);\n try {\n const raw = await readFile(filename, \"utf8\");\n return JSON.parse(raw) as any;\n } catch (err) {\n return null;\n }\n}\n\nexport async function getStatistics(\n year: number,\n category: StatsCategory,\n key: Fields,\n): Promise<StatsResult> {\n const file = await loadStatsFile(year, category);\n if (!file) {\n return {\n year,\n category,\n key,\n totalCount: 0,\n values: [],\n sum: 0,\n average: null,\n min: null,\n max: null,\n variance: null,\n stddev: null,\n };\n }\n\n const entry = file.stats?.[key as string];\n if (!entry) {\n return {\n year,\n category,\n key,\n totalCount: 0,\n values: [],\n sum: 0,\n average: null,\n min: null,\n max: null,\n variance: null,\n stddev: null,\n };\n }\n\n const values: ValueItem[] = entry.values ?? [];\n const totalCount: number = entry.totalCount ?? values.length;\n const sum: number = entry.stats?.sum ?? 0;\n const average: number | null = entry.stats?.average ?? null;\n const min: number | null = entry.stats?.min ?? null;\n const max: number | null = entry.stats?.max ?? null;\n const variance: number | null = entry.stats?.variance ?? null;\n const stddev: number | null = entry.stats?.deviation ?? null;\n\n return {\n year,\n category,\n key,\n totalCount,\n values,\n sum,\n average,\n min,\n max,\n variance,\n stddev,\n };\n}\n\nexport type Year = number;\n\nconst DEFAULT_YEARS: Year[] = getAllYears().map(({ year }) => year);\n\n/**\n * Returns an array of statistics for a single category across multiple years.\n * Example: getCategoryYearSeries(\"J2\", key) -> [Stats|null for 2005, 2006, ...]\n */\nexport async function getCategoryYearSeries(\n category: StatsCategory,\n key: Fields,\n): Promise<(StatsResult | null)[]> {\n const result: (StatsResult | null)[] = [];\n for (const year of DEFAULT_YEARS) {\n const stats = await getStatistics(year, category, key);\n result.push(stats.totalCount === 0 ? null : stats);\n }\n return result;\n}\n\n/**\n * Returns statistics for a single year as an object keyed by category.\n * If a category has no data, its value will be null.\n */\nexport function getStatsByYear(\n year: Year,\n keys: Fields,\n): Promise<Record<StatsCategory, StatsResult | null> | null>;\n\nexport function getStatsByYear(\n year: Year,\n keys: Fields[],\n): Promise<Record<StatsCategory, Record<Fields, StatsResult | null>> | null>;\n\nexport async function getStatsByYear(year: Year, keys: Fields | Fields[]) {\n const allYears = getAllYears();\n const categories = allYears.find(\n (yearInfo) => yearInfo.year === year,\n )?.categories;\n if (!categories) return null;\n\n if (typeof keys === \"string\") {\n const out: Record<StatsCategory, StatsResult | null> = {\n J1: null,\n J2: null,\n J3: null,\n } as any;\n\n for (const cat of categories) {\n const stats = await getStatistics(year, cat as StatsCategory, keys);\n out[cat] = stats.totalCount === 0 ? null : stats;\n }\n return out;\n }\n\n const out: Record<StatsCategory, Record<Fields, StatsResult | null>> = {\n J1: null,\n J2: null,\n J3: null,\n } as any;\n\n for (const cat of categories) {\n const statsByCategory: Record<Fields, StatsResult | null> = {} as any;\n\n for (const key of keys) {\n const stats = await getStatistics(year, cat as StatsCategory, key);\n statsByCategory[key] = stats.totalCount === 0 ? null : stats;\n }\n out[cat] = statsByCategory;\n }\n return out;\n}\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;AAIA,MAAM,oBAAoB,cAAc,OAAO,KAAK,IAAI;AACxD,MAAM,mBAAmB,KAAK,QAAQ,aAAa,CAAC;AAEpD,MAAa,YAA4B,4BAAY;;;;ACYrD,eAAe,iBAAkC;CAC/C,MAAM,aAAa;EACjB,QAAQ,WAAW,UAAU;EAC7B,QAAQ,WAAW,kBAAkB;EACrC,QAAQ,QAAQ,KAAK,EAAE,mCAAmC;EAC1D,QAAQ,QAAQ,KAAK,EAAE,eAAe;EACvC;AACD,MAAK,MAAM,KAAK,WACd,KAAI;AAEF,OADU,MAAM,KAAK,EAAE,EACjB,aAAa,CAAE,QAAO;UACrB,KAAK;AAIhB,OAAM,IAAI,MAAM,qDAAqD;;AAGvE,eAAe,cAAc,MAAc,UAAkB;CAE3D,MAAM,WAAW,KADL,MAAM,gBAAgB,EACP,GAAG,KAAK,GAAG,SAAS,OAAO;AACtD,KAAI;EACF,MAAM,MAAM,MAAM,SAAS,UAAU,OAAO;AAC5C,SAAO,KAAK,MAAM,IAAI;UACf,KAAK;AACZ,SAAO;;;AAIX,eAAsB,cACpB,MACA,UACA,KACsB;CACtB,MAAM,OAAO,MAAM,cAAc,MAAM,SAAS;AAChD,KAAI,CAAC,KACH,QAAO;EACL;EACA;EACA;EACA,YAAY;EACZ,QAAQ,EAAE;EACV,KAAK;EACL,SAAS;EACT,KAAK;EACL,KAAK;EACL,UAAU;EACV,QAAQ;EACT;CAGH,MAAM,QAAQ,KAAK,QAAQ;AAC3B,KAAI,CAAC,MACH,QAAO;EACL;EACA;EACA;EACA,YAAY;EACZ,QAAQ,EAAE;EACV,KAAK;EACL,SAAS;EACT,KAAK;EACL,KAAK;EACL,UAAU;EACV,QAAQ;EACT;CAGH,MAAMA,SAAsB,MAAM,UAAU,EAAE;AAS9C,QAAO;EACL;EACA;EACA;EACA,YAZyB,MAAM,cAAc,OAAO;EAapD;EACA,KAbkB,MAAM,OAAO,OAAO;EActC,SAb6B,MAAM,OAAO,WAAW;EAcrD,KAbyB,MAAM,OAAO,OAAO;EAc7C,KAbyB,MAAM,OAAO,OAAO;EAc7C,UAb8B,MAAM,OAAO,YAAY;EAcvD,QAb4B,MAAM,OAAO,aAAa;EAcvD;;AAKH,MAAMC,gBAAwB,aAAa,CAAC,KAAK,EAAE,WAAW,KAAK;;;;;AAMnE,eAAsB,sBACpB,UACA,KACiC;CACjC,MAAMC,SAAiC,EAAE;AACzC,MAAK,MAAM,QAAQ,eAAe;EAChC,MAAM,QAAQ,MAAM,cAAc,MAAM,UAAU,IAAI;AACtD,SAAO,KAAK,MAAM,eAAe,IAAI,OAAO,MAAM;;AAEpD,QAAO;;AAiBT,eAAsB,eAAe,MAAY,MAAyB;CAExE,MAAM,aADW,aAAa,CACF,MACzB,aAAa,SAAS,SAAS,KACjC,EAAE;AACH,KAAI,CAAC,WAAY,QAAO;AAExB,KAAI,OAAO,SAAS,UAAU;EAC5B,MAAMC,QAAiD;GACrD,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;AAED,OAAK,MAAM,OAAO,YAAY;GAC5B,MAAM,QAAQ,MAAM,cAAc,MAAM,KAAsB,KAAK;AACnE,SAAI,OAAO,MAAM,eAAe,IAAI,OAAO;;AAE7C,SAAOC;;CAGT,MAAMC,MAAiE;EACrE,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;AAED,MAAK,MAAM,OAAO,YAAY;EAC5B,MAAMC,kBAAsD,EAAE;AAE9D,OAAK,MAAM,OAAO,MAAM;GACtB,MAAM,QAAQ,MAAM,cAAc,MAAM,KAAsB,IAAI;AAClE,mBAAgB,OAAO,MAAM,eAAe,IAAI,OAAO;;AAEzD,MAAI,OAAO;;AAEb,QAAO"}
package/dist/type.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  //#region src/type.d.ts
2
2
  declare const CATEGORIES: readonly ["J1", "J2", "J3"];
3
- type Category = (typeof CATEGORIES)[number];
3
+ type StatsCategory = (typeof CATEGORIES)[number];
4
4
  declare const Fields: readonly ["revenue", "expense", "net_worth", "sponsor", "ticket", "broadcast", "salary", "average_attd", "unit_price"];
5
5
  type Fields = (typeof Fields)[number];
6
6
  type ValueItem = {
@@ -23,9 +23,9 @@ type CreateStatsResult = {
23
23
  };
24
24
  type DatasetFile = {
25
25
  year: number;
26
- category: Category;
26
+ category: StatsCategory;
27
27
  stats: Record<string, CreateStatsResult>;
28
28
  };
29
29
  //#endregion
30
- export { CATEGORIES, Category, CreateStatsResult, DatasetFile, Fields, StatsSummary, ValueItem };
30
+ export { CATEGORIES, CreateStatsResult, DatasetFile, Fields, StatsCategory, StatsSummary, ValueItem };
31
31
  //# sourceMappingURL=type.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.cts","names":[],"sources":["../src/type.ts"],"sourcesContent":[],"mappings":";cAAa;AAAA,KACD,QAAA,GADyC,CAAA,OACtB,UADsB,CAAA,CAAA,MAAA,CAAA;AACzC,cAEC,MAFkB,EAAA,SAAU,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,YAAA,CAAA;AAE5B,KAWD,MAAA,GADF,CAAA,OACmB,MADnB,CAAA,CAAA,MAAA,CAAA;AACE,KAEA,SAAA,GAFiB;EAEjB,IAAA,EAAA,MAAS;EAET,KAAA,EAAA,MAAA;AAUZ,CAAA;AAMY,KAhBA,YAAA,GAgBW;EAEX,GAAA,EAAA,MAAA;EACY,OAAA,EAAA,MAAA,GAAA,IAAA;EAAf,GAAA,EAAA,MAAA,GAAA,IAAA;EAAM,GAAA,EAAA,MAAA,GAAA,IAAA;;;;;KATH,iBAAA;UACF;;SAED;;KAGG,WAAA;;YAEA;SACH,eAAe"}
1
+ {"version":3,"file":"type.d.cts","names":[],"sources":["../src/type.ts"],"sourcesContent":[],"mappings":";cAAa;AAAA,KACD,aAAA,GADyC,CAAA,OACjB,UADiB,CAAA,CAAA,MAAA,CAAA;AACzC,cAEC,MAFY,EAAA,SAAW,CAAA,SAAU,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,YAAA,CAAA;AAEjC,KAWD,MAAA,GADF,CAAA,OACmB,MADnB,CAAA,CAAA,MAAA,CAAA;AACE,KAEA,SAAA,GAFiB;EAEjB,IAAA,EAAA,MAAS;EAET,KAAA,EAAA,MAAA;AAUZ,CAAA;AAMY,KAhBA,YAAA,GAgBW;EAEX,GAAA,EAAA,MAAA;EACY,OAAA,EAAA,MAAA,GAAA,IAAA;EAAf,GAAA,EAAA,MAAA,GAAA,IAAA;EAAM,GAAA,EAAA,MAAA,GAAA,IAAA;;;;;KATH,iBAAA;UACF;;SAED;;KAGG,WAAA;;YAEA;SACH,eAAe"}
package/dist/type.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  //#region src/type.d.ts
2
2
  declare const CATEGORIES: readonly ["J1", "J2", "J3"];
3
- type Category = (typeof CATEGORIES)[number];
3
+ type StatsCategory = (typeof CATEGORIES)[number];
4
4
  declare const Fields: readonly ["revenue", "expense", "net_worth", "sponsor", "ticket", "broadcast", "salary", "average_attd", "unit_price"];
5
5
  type Fields = (typeof Fields)[number];
6
6
  type ValueItem = {
@@ -23,9 +23,9 @@ type CreateStatsResult = {
23
23
  };
24
24
  type DatasetFile = {
25
25
  year: number;
26
- category: Category;
26
+ category: StatsCategory;
27
27
  stats: Record<string, CreateStatsResult>;
28
28
  };
29
29
  //#endregion
30
- export { CATEGORIES, Category, CreateStatsResult, DatasetFile, Fields, StatsSummary, ValueItem };
30
+ export { CATEGORIES, CreateStatsResult, DatasetFile, Fields, StatsCategory, StatsSummary, ValueItem };
31
31
  //# sourceMappingURL=type.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.mts","names":[],"sources":["../src/type.ts"],"sourcesContent":[],"mappings":";cAAa;AAAA,KACD,QAAA,GADyC,CAAA,OACtB,UADsB,CAAA,CAAA,MAAA,CAAA;AACzC,cAEC,MAFkB,EAAA,SAAU,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,YAAA,CAAA;AAE5B,KAWD,MAAA,GADF,CAAA,OACmB,MADnB,CAAA,CAAA,MAAA,CAAA;AACE,KAEA,SAAA,GAFiB;EAEjB,IAAA,EAAA,MAAS;EAET,KAAA,EAAA,MAAA;AAUZ,CAAA;AAMY,KAhBA,YAAA,GAgBW;EAEX,GAAA,EAAA,MAAA;EACY,OAAA,EAAA,MAAA,GAAA,IAAA;EAAf,GAAA,EAAA,MAAA,GAAA,IAAA;EAAM,GAAA,EAAA,MAAA,GAAA,IAAA;;;;;KATH,iBAAA;UACF;;SAED;;KAGG,WAAA;;YAEA;SACH,eAAe"}
1
+ {"version":3,"file":"type.d.mts","names":[],"sources":["../src/type.ts"],"sourcesContent":[],"mappings":";cAAa;AAAA,KACD,aAAA,GADyC,CAAA,OACjB,UADiB,CAAA,CAAA,MAAA,CAAA;AACzC,cAEC,MAFY,EAAA,SAAW,CAAA,SAAU,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,YAAA,CAAA;AAEjC,KAWD,MAAA,GADF,CAAA,OACmB,MADnB,CAAA,CAAA,MAAA,CAAA;AACE,KAEA,SAAA,GAFiB;EAEjB,IAAA,EAAA,MAAS;EAET,KAAA,EAAA,MAAA;AAUZ,CAAA;AAMY,KAhBA,YAAA,GAgBW;EAEX,GAAA,EAAA,MAAA;EACY,OAAA,EAAA,MAAA,GAAA,IAAA;EAAf,GAAA,EAAA,MAAA,GAAA,IAAA;EAAM,GAAA,EAAA,MAAA,GAAA,IAAA;;;;;KATH,iBAAA;UACF;;SAED;;KAGG,WAAA;;YAEA;SACH,eAAe"}
package/dist/type.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"type.mjs","names":[],"sources":["../src/type.ts"],"sourcesContent":["export const CATEGORIES = [\"J1\", \"J2\", \"J3\"] as const;\nexport type Category = (typeof CATEGORIES)[number];\n\nexport const Fields = [\n \"revenue\",\n \"expense\",\n \"net_worth\",\n \"sponsor\",\n \"ticket\",\n \"broadcast\",\n \"salary\",\n \"average_attd\",\n \"unit_price\",\n] as const;\nexport type Fields = (typeof Fields)[number];\n\nexport type ValueItem = { name: string; value: number };\n\nexport type StatsSummary = {\n sum: number;\n average: number | null;\n min: number | null;\n max: number | null;\n median?: number | null;\n deviation?: number | null;\n variance?: number | null;\n};\n\nexport type CreateStatsResult = {\n values: ValueItem[];\n totalCount: number;\n stats: StatsSummary;\n};\n\nexport type DatasetFile = {\n year: number;\n category: Category;\n stats: Record<string, CreateStatsResult>;\n};\n"],"mappings":";AAAA,MAAa,aAAa;CAAC;CAAM;CAAM;CAAK;AAG5C,MAAa,SAAS;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
1
+ {"version":3,"file":"type.mjs","names":[],"sources":["../src/type.ts"],"sourcesContent":["export const CATEGORIES = [\"J1\", \"J2\", \"J3\"] as const;\nexport type StatsCategory = (typeof CATEGORIES)[number];\n\nexport const Fields = [\n \"revenue\",\n \"expense\",\n \"net_worth\",\n \"sponsor\",\n \"ticket\",\n \"broadcast\",\n \"salary\",\n \"average_attd\",\n \"unit_price\",\n] as const;\nexport type Fields = (typeof Fields)[number];\n\nexport type ValueItem = { name: string; value: number };\n\nexport type StatsSummary = {\n sum: number;\n average: number | null;\n min: number | null;\n max: number | null;\n median?: number | null;\n deviation?: number | null;\n variance?: number | null;\n};\n\nexport type CreateStatsResult = {\n values: ValueItem[];\n totalCount: number;\n stats: StatsSummary;\n};\n\nexport type DatasetFile = {\n year: number;\n category: StatsCategory;\n stats: Record<string, CreateStatsResult>;\n};\n"],"mappings":";AAAA,MAAa,aAAa;CAAC;CAAM;CAAM;CAAK;AAG5C,MAAa,SAAS;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cieloazul310/jclub-financial-statistics",
3
- "version": "0.0.1-alpha.6",
3
+ "version": "0.0.1-alpha.8",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/cieloazul310/jclub-financial-table",
6
6
  "author": {
@@ -42,9 +42,10 @@
42
42
  "build:template": "tsdown"
43
43
  },
44
44
  "devDependencies": {
45
- "@cieloazul310/jclub-financial-data": "^0.0.1-alpha.6",
46
- "@repo/eslint-config": "^0.0.1-alpha.6",
47
- "@repo/typescript-config": "^0.0.1-alpha.6",
45
+ "@cieloazul310/jclub-financial-data": "^0.0.1-alpha.8",
46
+ "@cieloazul310/jclub-financial-utils": "^0.0.1-alpha.8",
47
+ "@repo/eslint-config": "^0.0.1-alpha.8",
48
+ "@repo/typescript-config": "^0.0.1-alpha.8",
48
49
  "@types/node": "^25.0.3",
49
50
  "eslint": "^9.39.2",
50
51
  "tsdown": "^0.18.2",
@@ -52,7 +53,8 @@
52
53
  "typescript": "^5.9.3"
53
54
  },
54
55
  "peerDependencies": {
55
- "@cieloazul310/jclub-financial-data": "^0.0.1-alpha.6"
56
+ "@cieloazul310/jclub-financial-data": "^0.0.1-alpha.8",
57
+ "@cieloazul310/jclub-financial-utils": "^0.0.1-alpha.8"
56
58
  },
57
59
  "lint-staged": {
58
60
  "**/*.{js,mjs,cjs,ts,tsx}": [