@wings-j/chart-data-preprocess 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Min
3
+ * @param [array] Array
4
+ * @return Value
5
+ */
6
+ declare function min(array: number[]): number;
7
+ /**
8
+ * Max
9
+ * @param [array] Array
10
+ * @return Value
11
+ */
12
+ declare function max(array: number[]): number;
13
+ /**
14
+ * Min Max
15
+ * @param [array] Array
16
+ * @return Min Value and Max Value
17
+ */
18
+ declare function minMax(array: number[]): [number, number];
19
+ /**
20
+ * Sum
21
+ * @param [array] Array
22
+ * @return Value
23
+ */
24
+ declare function sum(array: number[]): number;
25
+ /**
26
+ * Mean
27
+ * @param [array] Array
28
+ * @return Value
29
+ */
30
+ declare function mean(array: number[]): number;
31
+
32
+ /**
33
+ * Vector 1
34
+ */
35
+ interface Vector1 {
36
+ x: number;
37
+ }
38
+ /**
39
+ * Vector 2
40
+ */
41
+ interface Vector2 {
42
+ x: number;
43
+ y: number;
44
+ }
45
+ /**
46
+ * Vector 1 List
47
+ * @type [T] Origin Type
48
+ */
49
+ declare class Vector1List<T = any> {
50
+ array: T[];
51
+ vectors: Vector1[];
52
+ get tuples(): {
53
+ origin: T;
54
+ vector: Vector1 | undefined;
55
+ }[];
56
+ get xs(): number[];
57
+ /**
58
+ * Constructor
59
+ * @param [array] Array
60
+ * @param [xGetter] X Getter
61
+ */
62
+ constructor(array: T[], xGetter: (value: T) => number);
63
+ /**
64
+ * Clone
65
+ * @param [transformer] Transformer
66
+ * @return Cloned List
67
+ */
68
+ clone(transformer?: (vector: Vector1) => Vector1): Vector1List<T>;
69
+ }
70
+
71
+ /**
72
+ * Ratio
73
+ * @type [T] Origin Type
74
+ * @param [list] Array
75
+ * @return Array with X Ratio
76
+ */
77
+ declare function ratio<T = any>(list: Vector1List<T>): Vector1List<T>;
78
+
79
+ /**
80
+ * Parse
81
+ * @param [value] Value
82
+ * @return Number
83
+ */
84
+ declare function parse(value: any): number;
85
+
86
+ export { type Vector1, Vector1List, type Vector2, max, mean, min, minMax, parse, ratio, sum };
package/dist/index.js ADDED
@@ -0,0 +1,92 @@
1
+ // src/modules/math.ts
2
+ function min(array) {
3
+ return Math.min(...array);
4
+ }
5
+ function max(array) {
6
+ return Math.max(...array);
7
+ }
8
+ function minMax(array) {
9
+ let min2 = Infinity;
10
+ let max2 = -Infinity;
11
+ for (let a of array) {
12
+ if (a < min2) {
13
+ min2 = a;
14
+ }
15
+ if (a > max2) {
16
+ max2 = a;
17
+ }
18
+ }
19
+ return [min2, max2];
20
+ }
21
+ function sum(array) {
22
+ return array.reduce((p, c) => p + c, 0);
23
+ }
24
+ function mean(array) {
25
+ return sum(array) / array.length;
26
+ }
27
+
28
+ // src/modules/transform.ts
29
+ function ratio(list) {
30
+ let total = sum(list.xs);
31
+ return list.clone((a) => ({ x: a.x / total }));
32
+ }
33
+
34
+ // src/modules/utility.ts
35
+ function parse(value) {
36
+ if (value == null || value === void 0 || value === "") {
37
+ return 0;
38
+ } else if (typeof value === "number") {
39
+ return value;
40
+ } else if (typeof value === "string") {
41
+ if (value.endsWith("%")) {
42
+ return Number.parseFloat(value) / 100;
43
+ } else {
44
+ return Number.parseFloat(value);
45
+ }
46
+ } else {
47
+ return NaN;
48
+ }
49
+ }
50
+
51
+ // src/types/vector-list.ts
52
+ var Vector1List = class _Vector1List {
53
+ xGetter;
54
+ array;
55
+ vectors;
56
+ get xs() {
57
+ return this.vectors.map((a) => a.x);
58
+ }
59
+ /**
60
+ * Constructor
61
+ * @param [array] Array
62
+ * @param [xGetter] X Getter
63
+ */
64
+ constructor(array, xGetter) {
65
+ this.xGetter = xGetter;
66
+ this.array = array;
67
+ this.vectors = array.map((a) => ({ x: xGetter(a) }));
68
+ }
69
+ /**
70
+ * Clone
71
+ * @param [transformer] Transformer
72
+ * @return Cloned List
73
+ */
74
+ clone(transformer) {
75
+ let temp = new _Vector1List(this.array, this.xGetter);
76
+ if (transformer) {
77
+ temp.vectors = temp.vectors.map(transformer);
78
+ }
79
+ return temp;
80
+ }
81
+ };
82
+ export {
83
+ Vector1List,
84
+ max,
85
+ mean,
86
+ min,
87
+ minMax,
88
+ parse,
89
+ ratio,
90
+ sum
91
+ };
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/math.ts","../src/modules/transform.ts","../src/modules/utility.ts","../src/types/vector-list.ts"],"sourcesContent":["/**\n * Min\n * @param [array] Array\n * @return Value\n */\nfunction min(array: number[]): number {\n return Math.min(...array);\n}\n/**\n * Max\n * @param [array] Array\n * @return Value\n */\nfunction max(array: number[]): number {\n return Math.max(...array);\n}\n/**\n * Min Max\n * @param [array] Array\n * @return Min Value and Max Value\n */\nfunction minMax(array: number[]): [number, number] {\n let min = Infinity;\n let max = -Infinity;\n\n for (let a of array) {\n if (a < min) {\n min = a;\n }\n if (a > max) {\n max = a;\n }\n }\n\n return [min, max];\n}\n/**\n * Sum\n * @param [array] Array\n * @return Value\n */\nfunction sum(array: number[]): number {\n return array.reduce((p, c) => p + c, 0);\n}\n/**\n * Mean\n * @param [array] Array\n * @return Value\n */\nfunction mean(array: number[]): number {\n return sum(array) / array.length;\n}\n\nexport { max, mean, min, minMax, sum };\n","import type { Vector1List } from '../types/vector-list';\nimport { sum } from './math';\n\n/**\n * Ratio\n * @type [T] Origin Type\n * @param [list] Array\n * @return Array with X Ratio\n */\nfunction ratio<T = any>(list: Vector1List<T>) {\n let total = sum(list.xs);\n\n return list.clone(a => ({ x: a.x / total }));\n}\n\nexport { ratio };\n","/**\n * Parse\n * @param [value] Value\n * @return Number\n */\nfunction parse(value: any): number {\n if (value == null || value === undefined || value === '') {\n return 0;\n } else if (typeof value === 'number') {\n return value;\n } else if (typeof value === 'string') {\n if (value.endsWith('%')) {\n return Number.parseFloat(value) / 100;\n } else {\n return Number.parseFloat(value);\n }\n } else {\n return NaN;\n }\n}\n\nexport { parse };\n","/**\n * Vector 1\n */\ninterface Vector1 {\n x: number;\n}\n/**\n * Vector 2\n */\ninterface Vector2 {\n x: number;\n y: number;\n}\n\n/**\n * Vector 1 List\n * @type [T] Origin Type\n */\nclass Vector1List<T = any> {\n private xGetter: (value: T) => number;\n array: T[];\n vectors: Vector1[];\n\n get xs() {\n return this.vectors.map(a => a.x);\n }\n\n /**\n * Constructor\n * @param [array] Array\n * @param [xGetter] X Getter\n */\n constructor(array: T[], xGetter: (value: T) => number) {\n this.xGetter = xGetter;\n this.array = array;\n this.vectors = array.map(a => ({ x: xGetter(a) }));\n }\n\n /**\n * Clone\n * @param [transformer] Transformer\n * @return Cloned List\n */\n clone(transformer?: (vector: Vector1) => Vector1): Vector1List<T> {\n let temp = new Vector1List(this.array, this.xGetter);\n if (transformer) {\n temp.vectors = temp.vectors.map(transformer);\n }\n\n return temp;\n }\n}\n\nexport { Vector1List };\nexport type { Vector1, Vector2 };\n"],"mappings":";AAKA,SAAS,IAAI,OAAyB;AACpC,SAAO,KAAK,IAAI,GAAG,KAAK;AAC1B;AAMA,SAAS,IAAI,OAAyB;AACpC,SAAO,KAAK,IAAI,GAAG,KAAK;AAC1B;AAMA,SAAS,OAAO,OAAmC;AACjD,MAAIA,OAAM;AACV,MAAIC,OAAM;AAEV,WAAS,KAAK,OAAO;AACnB,QAAI,IAAID,MAAK;AACX,MAAAA,OAAM;AAAA,IACR;AACA,QAAI,IAAIC,MAAK;AACX,MAAAA,OAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO,CAACD,MAAKC,IAAG;AAClB;AAMA,SAAS,IAAI,OAAyB;AACpC,SAAO,MAAM,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AACxC;AAMA,SAAS,KAAK,OAAyB;AACrC,SAAO,IAAI,KAAK,IAAI,MAAM;AAC5B;;;AC1CA,SAAS,MAAe,MAAsB;AAC5C,MAAI,QAAQ,IAAI,KAAK,EAAE;AAEvB,SAAO,KAAK,MAAM,QAAM,EAAE,GAAG,EAAE,IAAI,MAAM,EAAE;AAC7C;;;ACRA,SAAS,MAAM,OAAoB;AACjC,MAAI,SAAS,QAAQ,UAAU,UAAa,UAAU,IAAI;AACxD,WAAO;AAAA,EACT,WAAW,OAAO,UAAU,UAAU;AACpC,WAAO;AAAA,EACT,WAAW,OAAO,UAAU,UAAU;AACpC,QAAI,MAAM,SAAS,GAAG,GAAG;AACvB,aAAO,OAAO,WAAW,KAAK,IAAI;AAAA,IACpC,OAAO;AACL,aAAO,OAAO,WAAW,KAAK;AAAA,IAChC;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;ACDA,IAAM,cAAN,MAAM,aAAqB;AAAA,EACjB;AAAA,EACR;AAAA,EACA;AAAA,EAEA,IAAI,KAAK;AACP,WAAO,KAAK,QAAQ,IAAI,OAAK,EAAE,CAAC;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAY,OAAY,SAA+B;AACrD,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,SAAK,UAAU,MAAM,IAAI,QAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAA4D;AAChE,QAAI,OAAO,IAAI,aAAY,KAAK,OAAO,KAAK,OAAO;AACnD,QAAI,aAAa;AACf,WAAK,UAAU,KAAK,QAAQ,IAAI,WAAW;AAAA,IAC7C;AAEA,WAAO;AAAA,EACT;AACF;","names":["min","max"]}
package/package.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "@wings-j/chart-data-preprocess",
3
+ "version": "0.0.0",
4
+ "description": "Tools for preprocessing data before generating charts.",
5
+ "license": "MIT",
6
+ "author": "WingsJ",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "scripts": {
10
+ "dev": "tsup --watch",
11
+ "test": "vitest",
12
+ "build": "tsup",
13
+ "release": "npm publish --access public"
14
+ },
15
+ "devDependencies": {
16
+ "tsup": "^8.5.1",
17
+ "typescript": "^5.9.3",
18
+ "vitest": "^4.1.6"
19
+ }
20
+ }