@xyo-network/react-price-forecast-plugin 2.61.9 → 2.61.10

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 (74) hide show
  1. package/dist/docs.json +3923 -671
  2. package/package.json +8 -8
  3. package/dist/browser/Plugin.cjs +0 -270
  4. package/dist/browser/Plugin.cjs.map +0 -1
  5. package/dist/browser/Plugin.js +0 -259
  6. package/dist/browser/Plugin.js.map +0 -1
  7. package/dist/browser/components/DetailsBox.cjs +0 -254
  8. package/dist/browser/components/DetailsBox.cjs.map +0 -1
  9. package/dist/browser/components/DetailsBox.js +0 -243
  10. package/dist/browser/components/DetailsBox.js.map +0 -1
  11. package/dist/browser/components/index.cjs +0 -256
  12. package/dist/browser/components/index.cjs.map +0 -1
  13. package/dist/browser/components/index.js +0 -243
  14. package/dist/browser/components/index.js.map +0 -1
  15. package/dist/browser/lib/DataLineStyles.cjs +0 -31
  16. package/dist/browser/lib/DataLineStyles.cjs.map +0 -1
  17. package/dist/browser/lib/DataLineStyles.js +0 -10
  18. package/dist/browser/lib/DataLineStyles.js.map +0 -1
  19. package/dist/browser/lib/DataPointStyles.cjs +0 -33
  20. package/dist/browser/lib/DataPointStyles.cjs.map +0 -1
  21. package/dist/browser/lib/DataPointStyles.js +0 -12
  22. package/dist/browser/lib/DataPointStyles.js.map +0 -1
  23. package/dist/browser/lib/ForecastLineChartConfigBuilder.cjs +0 -225
  24. package/dist/browser/lib/ForecastLineChartConfigBuilder.cjs.map +0 -1
  25. package/dist/browser/lib/ForecastLineChartConfigBuilder.js +0 -202
  26. package/dist/browser/lib/ForecastLineChartConfigBuilder.js.map +0 -1
  27. package/dist/browser/lib/MockSourcePayloads.cjs +0 -45
  28. package/dist/browser/lib/MockSourcePayloads.cjs.map +0 -1
  29. package/dist/browser/lib/MockSourcePayloads.js +0 -24
  30. package/dist/browser/lib/MockSourcePayloads.js.map +0 -1
  31. package/dist/browser/lib/SourcePayloads.cjs +0 -85
  32. package/dist/browser/lib/SourcePayloads.cjs.map +0 -1
  33. package/dist/browser/lib/SourcePayloads.js +0 -62
  34. package/dist/browser/lib/SourcePayloads.js.map +0 -1
  35. package/dist/browser/lib/index.cjs +0 -227
  36. package/dist/browser/lib/index.cjs.map +0 -1
  37. package/dist/browser/lib/index.js +0 -204
  38. package/dist/browser/lib/index.js.map +0 -1
  39. package/dist/node/Plugin.cjs +0 -278
  40. package/dist/node/Plugin.cjs.map +0 -1
  41. package/dist/node/Plugin.js +0 -263
  42. package/dist/node/Plugin.js.map +0 -1
  43. package/dist/node/components/DetailsBox.cjs +0 -262
  44. package/dist/node/components/DetailsBox.cjs.map +0 -1
  45. package/dist/node/components/DetailsBox.js +0 -247
  46. package/dist/node/components/DetailsBox.js.map +0 -1
  47. package/dist/node/components/index.cjs +0 -264
  48. package/dist/node/components/index.cjs.map +0 -1
  49. package/dist/node/components/index.js +0 -247
  50. package/dist/node/components/index.js.map +0 -1
  51. package/dist/node/lib/DataLineStyles.cjs +0 -35
  52. package/dist/node/lib/DataLineStyles.cjs.map +0 -1
  53. package/dist/node/lib/DataLineStyles.js +0 -10
  54. package/dist/node/lib/DataLineStyles.js.map +0 -1
  55. package/dist/node/lib/DataPointStyles.cjs +0 -37
  56. package/dist/node/lib/DataPointStyles.cjs.map +0 -1
  57. package/dist/node/lib/DataPointStyles.js +0 -12
  58. package/dist/node/lib/DataPointStyles.js.map +0 -1
  59. package/dist/node/lib/ForecastLineChartConfigBuilder.cjs +0 -233
  60. package/dist/node/lib/ForecastLineChartConfigBuilder.cjs.map +0 -1
  61. package/dist/node/lib/ForecastLineChartConfigBuilder.js +0 -206
  62. package/dist/node/lib/ForecastLineChartConfigBuilder.js.map +0 -1
  63. package/dist/node/lib/MockSourcePayloads.cjs +0 -49
  64. package/dist/node/lib/MockSourcePayloads.cjs.map +0 -1
  65. package/dist/node/lib/MockSourcePayloads.js +0 -24
  66. package/dist/node/lib/MockSourcePayloads.js.map +0 -1
  67. package/dist/node/lib/SourcePayloads.cjs +0 -89
  68. package/dist/node/lib/SourcePayloads.cjs.map +0 -1
  69. package/dist/node/lib/SourcePayloads.js +0 -62
  70. package/dist/node/lib/SourcePayloads.js.map +0 -1
  71. package/dist/node/lib/index.cjs +0 -237
  72. package/dist/node/lib/index.cjs.map +0 -1
  73. package/dist/node/lib/index.js +0 -208
  74. package/dist/node/lib/index.js.map +0 -1
@@ -1,89 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
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
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/lib/SourcePayloads.ts
21
- var SourcePayloads_exports = {};
22
- __export(SourcePayloads_exports, {
23
- SourcePayloads: () => SourcePayloads
24
- });
25
- module.exports = __toCommonJS(SourcePayloads_exports);
26
-
27
- // src/lib/MockSourcePayloads.ts
28
- var MockSourcePayloads = () => {
29
- const tenMin = 6e5;
30
- return [
31
- {
32
- baseFee: 38.90155387825,
33
- feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },
34
- priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
35
- schema: "network.xyo.blockchain.ethereum.gas",
36
- timestamp: Date.now() - tenMin
37
- },
38
- {
39
- baseFee: 38.90155387825,
40
- feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },
41
- priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
42
- schema: "network.xyo.blockchain.ethereum.gas",
43
- timestamp: Date.now()
44
- }
45
- ];
46
- };
47
-
48
- // src/lib/SourcePayloads.ts
49
- var SourcePayloads = class {
50
- constructor(sourcePayloads) {
51
- this.sourcePayloads = sourcePayloads;
52
- }
53
- sourcePrices = [];
54
- get payloads() {
55
- return this.sourcePayloads;
56
- }
57
- static async build(jsonPath) {
58
- const sourcePayloads = await this.fetchSourcePayloads();
59
- const instance = new this(sourcePayloads);
60
- const paths = jsonPath.split(".");
61
- instance.sourcePrices = sourcePayloads.map((payload) => {
62
- return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) };
63
- });
64
- return instance;
65
- }
66
- // TODO - fetch from archivist
67
- static async fetchSourcePayloads() {
68
- const payloads = await Promise.resolve(MockSourcePayloads());
69
- return payloads;
70
- }
71
- jsonPathTraverser(obj, path) {
72
- let result = obj;
73
- for (const key of path) {
74
- if (key in result) {
75
- const foundKey = key;
76
- result = result[foundKey];
77
- } else {
78
- result = void 0;
79
- break;
80
- }
81
- }
82
- return result;
83
- }
84
- };
85
- // Annotate the CommonJS export names for ESM import in node:
86
- 0 && (module.exports = {
87
- SourcePayloads
88
- });
89
- //# sourceMappingURL=SourcePayloads.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/SourcePayloads.ts","../../../src/lib/MockSourcePayloads.ts"],"sourcesContent":["import { Payload } from '@xyo-network/payload-model'\nimport { Point } from 'chart.js'\n\nimport { MockSourcePayloads } from './MockSourcePayloads'\n\nexport class SourcePayloads {\n sourcePrices: Point[] = []\n\n constructor(public sourcePayloads: Payload[]) {}\n\n get payloads() {\n return this.sourcePayloads\n }\n\n static async build(jsonPath: string) {\n const sourcePayloads = await this.fetchSourcePayloads()\n const instance = new this(sourcePayloads)\n\n const paths = jsonPath.split('.')\n instance.sourcePrices = sourcePayloads.map((payload) => {\n return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) }\n })\n return instance\n }\n\n // TODO - fetch from archivist\n static async fetchSourcePayloads() {\n const payloads = await Promise.resolve(MockSourcePayloads())\n return payloads\n }\n\n jsonPathTraverser(obj: Payload, path: string[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let result: any = obj\n for (const key of path) {\n if (key in result) {\n const foundKey = key as keyof typeof result\n result = result[foundKey]\n } else {\n result = undefined\n break\n }\n }\n\n return result\n }\n}\n","export const MockSourcePayloads = () => {\n const tenMin = 600000\n return [\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now() - tenMin,\n },\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now(),\n },\n ]\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,qBAAqB,MAAM;AACtC,QAAM,SAAS;AACf,SAAO;AAAA,IACL;AAAA,MACE,SAAS;AAAA,MACT,WAAW,EAAE,MAAM,eAAe,KAAK,cAAc,QAAQ,cAAc,UAAU,eAAe;AAAA,MACpG,mBAAmB,EAAE,MAAM,oBAAoB,KAAK,sBAAsB,QAAQ,MAAM,UAAU,mBAAmB;AAAA,MACrH,QAAQ;AAAA,MACR,WAAW,KAAK,IAAI,IAAI;AAAA,IAC1B;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,WAAW,EAAE,MAAM,eAAe,KAAK,cAAc,QAAQ,KAAK,UAAU,eAAe;AAAA,MAC3F,mBAAmB,EAAE,MAAM,oBAAoB,KAAK,sBAAsB,QAAQ,MAAM,UAAU,mBAAmB;AAAA,MACrH,QAAQ;AAAA,MACR,WAAW,KAAK,IAAI;AAAA,IACtB;AAAA,EACF;AACF;;;ADbO,IAAM,iBAAN,MAAqB;AAAA,EAG1B,YAAmB,gBAA2B;AAA3B;AAAA,EAA4B;AAAA,EAF/C,eAAwB,CAAC;AAAA,EAIzB,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,aAAa,MAAM,UAAkB;AACnC,UAAM,iBAAiB,MAAM,KAAK,oBAAoB;AACtD,UAAM,WAAW,IAAI,KAAK,cAAc;AAExC,UAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,aAAS,eAAe,eAAe,IAAI,CAAC,YAAY;AACtD,aAAO,EAAE,GAAG,QAAQ,WAAW,GAAG,SAAS,kBAAkB,SAAS,KAAK,EAAE;AAAA,IAC/E,CAAC;AACD,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,aAAa,sBAAsB;AACjC,UAAM,WAAW,MAAM,QAAQ,QAAQ,mBAAmB,CAAC;AAC3D,WAAO;AAAA,EACT;AAAA,EAEA,kBAAkB,KAAc,MAAgB;AAE9C,QAAI,SAAc;AAClB,eAAW,OAAO,MAAM;AACtB,UAAI,OAAO,QAAQ;AACjB,cAAM,WAAW;AACjB,iBAAS,OAAO,QAAQ;AAAA,MAC1B,OAAO;AACL,iBAAS;AACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1,62 +0,0 @@
1
- // src/lib/MockSourcePayloads.ts
2
- var MockSourcePayloads = () => {
3
- const tenMin = 6e5;
4
- return [
5
- {
6
- baseFee: 38.90155387825,
7
- feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },
8
- priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
9
- schema: "network.xyo.blockchain.ethereum.gas",
10
- timestamp: Date.now() - tenMin
11
- },
12
- {
13
- baseFee: 38.90155387825,
14
- feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },
15
- priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
16
- schema: "network.xyo.blockchain.ethereum.gas",
17
- timestamp: Date.now()
18
- }
19
- ];
20
- };
21
-
22
- // src/lib/SourcePayloads.ts
23
- var SourcePayloads = class {
24
- constructor(sourcePayloads) {
25
- this.sourcePayloads = sourcePayloads;
26
- }
27
- sourcePrices = [];
28
- get payloads() {
29
- return this.sourcePayloads;
30
- }
31
- static async build(jsonPath) {
32
- const sourcePayloads = await this.fetchSourcePayloads();
33
- const instance = new this(sourcePayloads);
34
- const paths = jsonPath.split(".");
35
- instance.sourcePrices = sourcePayloads.map((payload) => {
36
- return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) };
37
- });
38
- return instance;
39
- }
40
- // TODO - fetch from archivist
41
- static async fetchSourcePayloads() {
42
- const payloads = await Promise.resolve(MockSourcePayloads());
43
- return payloads;
44
- }
45
- jsonPathTraverser(obj, path) {
46
- let result = obj;
47
- for (const key of path) {
48
- if (key in result) {
49
- const foundKey = key;
50
- result = result[foundKey];
51
- } else {
52
- result = void 0;
53
- break;
54
- }
55
- }
56
- return result;
57
- }
58
- };
59
- export {
60
- SourcePayloads
61
- };
62
- //# sourceMappingURL=SourcePayloads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/MockSourcePayloads.ts","../../../src/lib/SourcePayloads.ts"],"sourcesContent":["export const MockSourcePayloads = () => {\n const tenMin = 600000\n return [\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now() - tenMin,\n },\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now(),\n },\n ]\n}\n","import { Payload } from '@xyo-network/payload-model'\nimport { Point } from 'chart.js'\n\nimport { MockSourcePayloads } from './MockSourcePayloads'\n\nexport class SourcePayloads {\n sourcePrices: Point[] = []\n\n constructor(public sourcePayloads: Payload[]) {}\n\n get payloads() {\n return this.sourcePayloads\n }\n\n static async build(jsonPath: string) {\n const sourcePayloads = await this.fetchSourcePayloads()\n const instance = new this(sourcePayloads)\n\n const paths = jsonPath.split('.')\n instance.sourcePrices = sourcePayloads.map((payload) => {\n return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) }\n })\n return instance\n }\n\n // TODO - fetch from archivist\n static async fetchSourcePayloads() {\n const payloads = await Promise.resolve(MockSourcePayloads())\n return payloads\n }\n\n jsonPathTraverser(obj: Payload, path: string[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let result: any = obj\n for (const key of path) {\n if (key in result) {\n const foundKey = key as keyof typeof result\n result = result[foundKey]\n } else {\n result = undefined\n break\n }\n }\n\n return result\n }\n}\n"],"mappings":";AAAO,IAAM,qBAAqB,MAAM;AACtC,QAAM,SAAS;AACf,SAAO;AAAA,IACL;AAAA,MACE,SAAS;AAAA,MACT,WAAW,EAAE,MAAM,eAAe,KAAK,cAAc,QAAQ,cAAc,UAAU,eAAe;AAAA,MACpG,mBAAmB,EAAE,MAAM,oBAAoB,KAAK,sBAAsB,QAAQ,MAAM,UAAU,mBAAmB;AAAA,MACrH,QAAQ;AAAA,MACR,WAAW,KAAK,IAAI,IAAI;AAAA,IAC1B;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,WAAW,EAAE,MAAM,eAAe,KAAK,cAAc,QAAQ,KAAK,UAAU,eAAe;AAAA,MAC3F,mBAAmB,EAAE,MAAM,oBAAoB,KAAK,sBAAsB,QAAQ,MAAM,UAAU,mBAAmB;AAAA,MACrH,QAAQ;AAAA,MACR,WAAW,KAAK,IAAI;AAAA,IACtB;AAAA,EACF;AACF;;;ACbO,IAAM,iBAAN,MAAqB;AAAA,EAG1B,YAAmB,gBAA2B;AAA3B;AAAA,EAA4B;AAAA,EAF/C,eAAwB,CAAC;AAAA,EAIzB,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,aAAa,MAAM,UAAkB;AACnC,UAAM,iBAAiB,MAAM,KAAK,oBAAoB;AACtD,UAAM,WAAW,IAAI,KAAK,cAAc;AAExC,UAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,aAAS,eAAe,eAAe,IAAI,CAAC,YAAY;AACtD,aAAO,EAAE,GAAG,QAAQ,WAAW,GAAG,SAAS,kBAAkB,SAAS,KAAK,EAAE;AAAA,IAC/E,CAAC;AACD,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,aAAa,sBAAsB;AACjC,UAAM,WAAW,MAAM,QAAQ,QAAQ,mBAAmB,CAAC;AAC3D,WAAO;AAAA,EACT;AAAA,EAEA,kBAAkB,KAAc,MAAgB;AAE9C,QAAI,SAAc;AAClB,eAAW,OAAO,MAAM;AACtB,UAAI,OAAO,QAAQ;AACjB,cAAM,WAAW;AACjB,iBAAS,OAAO,QAAQ;AAAA,MAC1B,OAAO;AACL,iBAAS;AACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1,237 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
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
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/lib/index.ts
21
- var lib_exports = {};
22
- __export(lib_exports, {
23
- ForecastLineChartConfigBuilder: () => ForecastLineChartConfigBuilder,
24
- MockSourcePayloads: () => MockSourcePayloads,
25
- SourcePayloads: () => SourcePayloads
26
- });
27
- module.exports = __toCommonJS(lib_exports);
28
-
29
- // src/lib/DataLineStyles.ts
30
- var import_material = require("@mui/material");
31
- var DataLineStyles = (color) => ({
32
- backgroundColor: color ? (0, import_material.alpha)(color, 0.5) : void 0,
33
- borderColor: color
34
- });
35
-
36
- // src/lib/DataPointStyles.ts
37
- var DataPointStyles = (pointHoverBackgroundColor) => ({
38
- pointHitRadius: 20,
39
- pointHoverBackgroundColor,
40
- pointHoverRadius: 10,
41
- pointRadius: 5,
42
- pointStyle: "circle"
43
- });
44
-
45
- // src/lib/MockSourcePayloads.ts
46
- var MockSourcePayloads = () => {
47
- const tenMin = 6e5;
48
- return [
49
- {
50
- baseFee: 38.90155387825,
51
- feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },
52
- priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
53
- schema: "network.xyo.blockchain.ethereum.gas",
54
- timestamp: Date.now() - tenMin
55
- },
56
- {
57
- baseFee: 38.90155387825,
58
- feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },
59
- priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
60
- schema: "network.xyo.blockchain.ethereum.gas",
61
- timestamp: Date.now()
62
- }
63
- ];
64
- };
65
-
66
- // src/lib/SourcePayloads.ts
67
- var SourcePayloads = class {
68
- constructor(sourcePayloads) {
69
- this.sourcePayloads = sourcePayloads;
70
- }
71
- sourcePrices = [];
72
- get payloads() {
73
- return this.sourcePayloads;
74
- }
75
- static async build(jsonPath) {
76
- const sourcePayloads = await this.fetchSourcePayloads();
77
- const instance = new this(sourcePayloads);
78
- const paths = jsonPath.split(".");
79
- instance.sourcePrices = sourcePayloads.map((payload) => {
80
- return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) };
81
- });
82
- return instance;
83
- }
84
- // TODO - fetch from archivist
85
- static async fetchSourcePayloads() {
86
- const payloads = await Promise.resolve(MockSourcePayloads());
87
- return payloads;
88
- }
89
- jsonPathTraverser(obj, path) {
90
- let result = obj;
91
- for (const key of path) {
92
- if (key in result) {
93
- const foundKey = key;
94
- result = result[foundKey];
95
- } else {
96
- result = void 0;
97
- break;
98
- }
99
- }
100
- return result;
101
- }
102
- };
103
-
104
- // src/lib/ForecastLineChartConfigBuilder.ts
105
- var defaultOptions = () => ({
106
- plugins: {
107
- legend: {
108
- position: "top"
109
- }
110
- },
111
- responsive: true
112
- });
113
- var ForecastLineChartConfigBuilder = class _ForecastLineChartConfigBuilder {
114
- constructor(theme, payload) {
115
- this.payload = payload;
116
- this.themeColors = this.parseTheme(theme);
117
- }
118
- data = {
119
- datasets: []
120
- };
121
- options = defaultOptions();
122
- themeColors;
123
- get forecastPayload() {
124
- if (this.payload) {
125
- return this.payload;
126
- } else {
127
- throw Error("ForecastPayload was not defined");
128
- }
129
- }
130
- static async create(theme, payload, sourcePayloadConfig) {
131
- const instance = new _ForecastLineChartConfigBuilder(theme, payload);
132
- await instance.build(sourcePayloadConfig == null ? void 0 : sourcePayloadConfig.fetch);
133
- instance.refreshValues();
134
- return instance;
135
- }
136
- async build(includeSources) {
137
- this.buildOptions();
138
- await this.buildData(includeSources);
139
- return this;
140
- }
141
- async buildData(includeSources) {
142
- const forecastData = this.generateDataSetForecastData();
143
- const datasets = [forecastData];
144
- if (includeSources) {
145
- const sourceData = await this.generateDataSetSourcePayloads();
146
- datasets.unshift(sourceData);
147
- const lastSourceDataItem = sourceData.data.at(-1);
148
- forecastData.data.unshift(lastSourceDataItem);
149
- }
150
- this.data = {
151
- datasets
152
- };
153
- return this;
154
- }
155
- buildOptions() {
156
- if (this.options.plugins) {
157
- this.options.plugins.title = this.generateTitle();
158
- this.options.plugins.legend = this.generateLegend();
159
- }
160
- this.options.scales = this.generateScales();
161
- return this;
162
- }
163
- refreshValues() {
164
- this.data = { ...this.data };
165
- this.options = { ...this.options };
166
- }
167
- generateLegend() {
168
- return {
169
- labels: {
170
- pointStyle: "circle",
171
- usePointStyle: true
172
- }
173
- };
174
- }
175
- generateScales() {
176
- var _a, _b;
177
- return {
178
- x: {
179
- grid: {
180
- color: (_a = this.themeColors) == null ? void 0 : _a.gridColor
181
- },
182
- time: {
183
- unit: "minute"
184
- },
185
- type: "time"
186
- },
187
- y: {
188
- grid: {
189
- color: (_b = this.themeColors) == null ? void 0 : _b.gridColor
190
- }
191
- }
192
- };
193
- }
194
- generateTitle() {
195
- var _a;
196
- return {
197
- display: true,
198
- text: `Gas Price Forecaster (GWEI over time from ${((_a = this.forecastPayload) == null ? void 0 : _a.values[0].timestamp) ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ""})`
199
- };
200
- }
201
- parseTheme(theme) {
202
- const dark = theme.palette.mode === "dark";
203
- return {
204
- dataSetColorPrimary: theme.palette.primary.light,
205
- dataSetColorSecondary: theme.palette.secondary.light,
206
- gridColor: dark ? theme.palette.grey[800] : theme.palette.grey[300]
207
- };
208
- }
209
- generateDataSetForecastData() {
210
- var _a, _b;
211
- return {
212
- borderDash: [5],
213
- borderDashOffset: 0.5,
214
- data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),
215
- label: "Forecast Price",
216
- ...DataPointStyles((_a = this.themeColors) == null ? void 0 : _a.dataSetColorPrimary),
217
- ...DataLineStyles((_b = this.themeColors) == null ? void 0 : _b.dataSetColorPrimary)
218
- };
219
- }
220
- async generateDataSetSourcePayloads() {
221
- var _a, _b;
222
- const { sourcePrices } = await SourcePayloads.build("feePerGas.medium");
223
- return {
224
- data: sourcePrices,
225
- label: "Source Prices",
226
- ...DataLineStyles((_a = this.themeColors) == null ? void 0 : _a.dataSetColorSecondary),
227
- ...DataPointStyles((_b = this.themeColors) == null ? void 0 : _b.dataSetColorSecondary)
228
- };
229
- }
230
- };
231
- // Annotate the CommonJS export names for ESM import in node:
232
- 0 && (module.exports = {
233
- ForecastLineChartConfigBuilder,
234
- MockSourcePayloads,
235
- SourcePayloads
236
- });
237
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/index.ts","../../../src/lib/DataLineStyles.ts","../../../src/lib/DataPointStyles.ts","../../../src/lib/MockSourcePayloads.ts","../../../src/lib/SourcePayloads.ts","../../../src/lib/ForecastLineChartConfigBuilder.ts"],"sourcesContent":["export * from './ForecastLineChartConfigBuilder'\nexport * from './MockSourcePayloads'\nexport * from './SourcePayloads'\n","import { alpha } from '@mui/material'\n\nexport const DataLineStyles = (color?: string) => ({\n backgroundColor: color ? alpha(color, 0.5) : undefined,\n borderColor: color,\n})\n","export const DataPointStyles = (pointHoverBackgroundColor?: string) => ({\n pointHitRadius: 20,\n pointHoverBackgroundColor,\n pointHoverRadius: 10,\n pointRadius: 5,\n pointStyle: 'circle',\n})\n","export const MockSourcePayloads = () => {\n const tenMin = 600000\n return [\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now() - tenMin,\n },\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now(),\n },\n ]\n}\n","import { Payload } from '@xyo-network/payload-model'\nimport { Point } from 'chart.js'\n\nimport { MockSourcePayloads } from './MockSourcePayloads'\n\nexport class SourcePayloads {\n sourcePrices: Point[] = []\n\n constructor(public sourcePayloads: Payload[]) {}\n\n get payloads() {\n return this.sourcePayloads\n }\n\n static async build(jsonPath: string) {\n const sourcePayloads = await this.fetchSourcePayloads()\n const instance = new this(sourcePayloads)\n\n const paths = jsonPath.split('.')\n instance.sourcePrices = sourcePayloads.map((payload) => {\n return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) }\n })\n return instance\n }\n\n // TODO - fetch from archivist\n static async fetchSourcePayloads() {\n const payloads = await Promise.resolve(MockSourcePayloads())\n return payloads\n }\n\n jsonPathTraverser(obj: Payload, path: string[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let result: any = obj\n for (const key of path) {\n if (key in result) {\n const foundKey = key as keyof typeof result\n result = result[foundKey]\n } else {\n result = undefined\n break\n }\n }\n\n return result\n }\n}\n","import { Theme } from '@mui/material'\nimport { ForecastPayload } from '@xyo-network/diviner-forecasting-model'\nimport { ChartData, ChartDataset, ChartOptions, LegendOptions, Point, ScaleChartOptions } from 'chart.js'\n// eslint-disable-next-line import/no-unresolved\nimport { _DeepPartialObject } from 'chart.js/dist/types/utils'\n\nimport { DataLineStyles } from './DataLineStyles'\nimport { DataPointStyles } from './DataPointStyles'\nimport { SourcePayloads } from './SourcePayloads'\n\ninterface SourcePayloadConfig {\n fetch: boolean\n sampleSize?: number\n}\n\ninterface ThemeColors {\n dataSetColorPrimary: string\n dataSetColorSecondary: string\n gridColor: string\n}\n\nconst defaultOptions: () => ChartOptions<'line'> = () => ({\n plugins: {\n legend: {\n position: 'top' as const,\n },\n },\n responsive: true,\n})\n\nexport class ForecastLineChartConfigBuilder {\n data: ChartData<'line'> = {\n datasets: [],\n }\n options: ChartOptions<'line'> = defaultOptions()\n themeColors: ThemeColors | undefined\n\n constructor(\n theme: Theme,\n private payload?: ForecastPayload,\n ) {\n this.themeColors = this.parseTheme(theme)\n }\n\n get forecastPayload() {\n if (this.payload) {\n return this.payload\n } else {\n throw Error('ForecastPayload was not defined')\n }\n }\n\n static async create(theme: Theme, payload?: ForecastPayload, sourcePayloadConfig?: SourcePayloadConfig) {\n const instance = new ForecastLineChartConfigBuilder(theme, payload)\n\n await instance.build(sourcePayloadConfig?.fetch)\n\n instance.refreshValues()\n\n return instance\n }\n\n async build(includeSources?: boolean) {\n this.buildOptions()\n await this.buildData(includeSources)\n return this\n }\n\n async buildData(includeSources?: boolean) {\n const forecastData = this.generateDataSetForecastData()\n\n const datasets: ChartDataset<'line'>[] = [forecastData]\n\n if (includeSources) {\n // build data from sources in forecastPayload\n const sourceData = await this.generateDataSetSourcePayloads()\n datasets.unshift(sourceData)\n\n // add last source point as first item in prediction to connect the lines\n const lastSourceDataItem = sourceData.data.at(-1) as Point\n forecastData.data.unshift(lastSourceDataItem)\n }\n\n this.data = {\n datasets,\n }\n\n return this\n }\n\n buildOptions() {\n if (this.options.plugins) {\n this.options.plugins.title = this.generateTitle()\n this.options.plugins.legend = this.generateLegend()\n }\n this.options.scales = this.generateScales()\n\n return this\n }\n\n refreshValues() {\n this.data = { ...this.data }\n this.options = { ...this.options }\n }\n\n protected generateLegend(): _DeepPartialObject<LegendOptions<'line'>> {\n return {\n labels: {\n pointStyle: 'circle',\n usePointStyle: true,\n },\n }\n }\n\n protected generateScales(): _DeepPartialObject<ScaleChartOptions<'line'>['scales']> {\n return {\n x: {\n grid: {\n color: this.themeColors?.gridColor,\n },\n time: {\n unit: 'minute',\n },\n type: 'time',\n },\n y: {\n grid: {\n color: this.themeColors?.gridColor,\n },\n },\n }\n }\n\n protected generateTitle() {\n return {\n display: true,\n text: `Gas Price Forecaster (GWEI over time from ${\n this.forecastPayload?.values[0].timestamp ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ''\n })`,\n }\n }\n\n protected parseTheme(theme: Theme) {\n const dark = theme.palette.mode === 'dark'\n return {\n dataSetColorPrimary: theme.palette.primary.light,\n dataSetColorSecondary: theme.palette.secondary.light,\n gridColor: dark ? theme.palette.grey[800] : theme.palette.grey[300],\n }\n }\n\n private generateDataSetForecastData(): ChartDataset<'line'> {\n return {\n borderDash: [5],\n borderDashOffset: 0.5,\n data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),\n label: 'Forecast Price',\n ...DataPointStyles(this.themeColors?.dataSetColorPrimary),\n ...DataLineStyles(this.themeColors?.dataSetColorPrimary),\n }\n }\n\n private async generateDataSetSourcePayloads(): Promise<ChartDataset<'line'>> {\n const { sourcePrices } = await SourcePayloads.build('feePerGas.medium')\n return {\n data: sourcePrices,\n label: 'Source Prices',\n ...DataLineStyles(this.themeColors?.dataSetColorSecondary),\n ...DataPointStyles(this.themeColors?.dataSetColorSecondary),\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,208 +0,0 @@
1
- // src/lib/DataLineStyles.ts
2
- import { alpha } from "@mui/material";
3
- var DataLineStyles = (color) => ({
4
- backgroundColor: color ? alpha(color, 0.5) : void 0,
5
- borderColor: color
6
- });
7
-
8
- // src/lib/DataPointStyles.ts
9
- var DataPointStyles = (pointHoverBackgroundColor) => ({
10
- pointHitRadius: 20,
11
- pointHoverBackgroundColor,
12
- pointHoverRadius: 10,
13
- pointRadius: 5,
14
- pointStyle: "circle"
15
- });
16
-
17
- // src/lib/MockSourcePayloads.ts
18
- var MockSourcePayloads = () => {
19
- const tenMin = 6e5;
20
- return [
21
- {
22
- baseFee: 38.90155387825,
23
- feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },
24
- priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
25
- schema: "network.xyo.blockchain.ethereum.gas",
26
- timestamp: Date.now() - tenMin
27
- },
28
- {
29
- baseFee: 38.90155387825,
30
- feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },
31
- priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },
32
- schema: "network.xyo.blockchain.ethereum.gas",
33
- timestamp: Date.now()
34
- }
35
- ];
36
- };
37
-
38
- // src/lib/SourcePayloads.ts
39
- var SourcePayloads = class {
40
- constructor(sourcePayloads) {
41
- this.sourcePayloads = sourcePayloads;
42
- }
43
- sourcePrices = [];
44
- get payloads() {
45
- return this.sourcePayloads;
46
- }
47
- static async build(jsonPath) {
48
- const sourcePayloads = await this.fetchSourcePayloads();
49
- const instance = new this(sourcePayloads);
50
- const paths = jsonPath.split(".");
51
- instance.sourcePrices = sourcePayloads.map((payload) => {
52
- return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) };
53
- });
54
- return instance;
55
- }
56
- // TODO - fetch from archivist
57
- static async fetchSourcePayloads() {
58
- const payloads = await Promise.resolve(MockSourcePayloads());
59
- return payloads;
60
- }
61
- jsonPathTraverser(obj, path) {
62
- let result = obj;
63
- for (const key of path) {
64
- if (key in result) {
65
- const foundKey = key;
66
- result = result[foundKey];
67
- } else {
68
- result = void 0;
69
- break;
70
- }
71
- }
72
- return result;
73
- }
74
- };
75
-
76
- // src/lib/ForecastLineChartConfigBuilder.ts
77
- var defaultOptions = () => ({
78
- plugins: {
79
- legend: {
80
- position: "top"
81
- }
82
- },
83
- responsive: true
84
- });
85
- var ForecastLineChartConfigBuilder = class _ForecastLineChartConfigBuilder {
86
- constructor(theme, payload) {
87
- this.payload = payload;
88
- this.themeColors = this.parseTheme(theme);
89
- }
90
- data = {
91
- datasets: []
92
- };
93
- options = defaultOptions();
94
- themeColors;
95
- get forecastPayload() {
96
- if (this.payload) {
97
- return this.payload;
98
- } else {
99
- throw Error("ForecastPayload was not defined");
100
- }
101
- }
102
- static async create(theme, payload, sourcePayloadConfig) {
103
- const instance = new _ForecastLineChartConfigBuilder(theme, payload);
104
- await instance.build(sourcePayloadConfig == null ? void 0 : sourcePayloadConfig.fetch);
105
- instance.refreshValues();
106
- return instance;
107
- }
108
- async build(includeSources) {
109
- this.buildOptions();
110
- await this.buildData(includeSources);
111
- return this;
112
- }
113
- async buildData(includeSources) {
114
- const forecastData = this.generateDataSetForecastData();
115
- const datasets = [forecastData];
116
- if (includeSources) {
117
- const sourceData = await this.generateDataSetSourcePayloads();
118
- datasets.unshift(sourceData);
119
- const lastSourceDataItem = sourceData.data.at(-1);
120
- forecastData.data.unshift(lastSourceDataItem);
121
- }
122
- this.data = {
123
- datasets
124
- };
125
- return this;
126
- }
127
- buildOptions() {
128
- if (this.options.plugins) {
129
- this.options.plugins.title = this.generateTitle();
130
- this.options.plugins.legend = this.generateLegend();
131
- }
132
- this.options.scales = this.generateScales();
133
- return this;
134
- }
135
- refreshValues() {
136
- this.data = { ...this.data };
137
- this.options = { ...this.options };
138
- }
139
- generateLegend() {
140
- return {
141
- labels: {
142
- pointStyle: "circle",
143
- usePointStyle: true
144
- }
145
- };
146
- }
147
- generateScales() {
148
- var _a, _b;
149
- return {
150
- x: {
151
- grid: {
152
- color: (_a = this.themeColors) == null ? void 0 : _a.gridColor
153
- },
154
- time: {
155
- unit: "minute"
156
- },
157
- type: "time"
158
- },
159
- y: {
160
- grid: {
161
- color: (_b = this.themeColors) == null ? void 0 : _b.gridColor
162
- }
163
- }
164
- };
165
- }
166
- generateTitle() {
167
- var _a;
168
- return {
169
- display: true,
170
- text: `Gas Price Forecaster (GWEI over time from ${((_a = this.forecastPayload) == null ? void 0 : _a.values[0].timestamp) ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ""})`
171
- };
172
- }
173
- parseTheme(theme) {
174
- const dark = theme.palette.mode === "dark";
175
- return {
176
- dataSetColorPrimary: theme.palette.primary.light,
177
- dataSetColorSecondary: theme.palette.secondary.light,
178
- gridColor: dark ? theme.palette.grey[800] : theme.palette.grey[300]
179
- };
180
- }
181
- generateDataSetForecastData() {
182
- var _a, _b;
183
- return {
184
- borderDash: [5],
185
- borderDashOffset: 0.5,
186
- data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),
187
- label: "Forecast Price",
188
- ...DataPointStyles((_a = this.themeColors) == null ? void 0 : _a.dataSetColorPrimary),
189
- ...DataLineStyles((_b = this.themeColors) == null ? void 0 : _b.dataSetColorPrimary)
190
- };
191
- }
192
- async generateDataSetSourcePayloads() {
193
- var _a, _b;
194
- const { sourcePrices } = await SourcePayloads.build("feePerGas.medium");
195
- return {
196
- data: sourcePrices,
197
- label: "Source Prices",
198
- ...DataLineStyles((_a = this.themeColors) == null ? void 0 : _a.dataSetColorSecondary),
199
- ...DataPointStyles((_b = this.themeColors) == null ? void 0 : _b.dataSetColorSecondary)
200
- };
201
- }
202
- };
203
- export {
204
- ForecastLineChartConfigBuilder,
205
- MockSourcePayloads,
206
- SourcePayloads
207
- };
208
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/DataLineStyles.ts","../../../src/lib/DataPointStyles.ts","../../../src/lib/MockSourcePayloads.ts","../../../src/lib/SourcePayloads.ts","../../../src/lib/ForecastLineChartConfigBuilder.ts"],"sourcesContent":["import { alpha } from '@mui/material'\n\nexport const DataLineStyles = (color?: string) => ({\n backgroundColor: color ? alpha(color, 0.5) : undefined,\n borderColor: color,\n})\n","export const DataPointStyles = (pointHoverBackgroundColor?: string) => ({\n pointHitRadius: 20,\n pointHoverBackgroundColor,\n pointHoverRadius: 10,\n pointRadius: 5,\n pointStyle: 'circle',\n})\n","export const MockSourcePayloads = () => {\n const tenMin = 600000\n return [\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 39.306868093, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now() - tenMin,\n },\n {\n baseFee: 38.90155387825,\n feePerGas: { high: 47.9945864396, low: 39.006868093, medium: 100, veryHigh: 44.45384380525 },\n priorityFeePerGas: { high: 1.0266666666666666, low: -0.41000000000000003, medium: 0.38, veryHigh: 1.3900000000000001 },\n schema: 'network.xyo.blockchain.ethereum.gas',\n timestamp: Date.now(),\n },\n ]\n}\n","import { Payload } from '@xyo-network/payload-model'\nimport { Point } from 'chart.js'\n\nimport { MockSourcePayloads } from './MockSourcePayloads'\n\nexport class SourcePayloads {\n sourcePrices: Point[] = []\n\n constructor(public sourcePayloads: Payload[]) {}\n\n get payloads() {\n return this.sourcePayloads\n }\n\n static async build(jsonPath: string) {\n const sourcePayloads = await this.fetchSourcePayloads()\n const instance = new this(sourcePayloads)\n\n const paths = jsonPath.split('.')\n instance.sourcePrices = sourcePayloads.map((payload) => {\n return { x: payload.timestamp, y: instance.jsonPathTraverser(payload, paths) }\n })\n return instance\n }\n\n // TODO - fetch from archivist\n static async fetchSourcePayloads() {\n const payloads = await Promise.resolve(MockSourcePayloads())\n return payloads\n }\n\n jsonPathTraverser(obj: Payload, path: string[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let result: any = obj\n for (const key of path) {\n if (key in result) {\n const foundKey = key as keyof typeof result\n result = result[foundKey]\n } else {\n result = undefined\n break\n }\n }\n\n return result\n }\n}\n","import { Theme } from '@mui/material'\nimport { ForecastPayload } from '@xyo-network/diviner-forecasting-model'\nimport { ChartData, ChartDataset, ChartOptions, LegendOptions, Point, ScaleChartOptions } from 'chart.js'\n// eslint-disable-next-line import/no-unresolved\nimport { _DeepPartialObject } from 'chart.js/dist/types/utils'\n\nimport { DataLineStyles } from './DataLineStyles'\nimport { DataPointStyles } from './DataPointStyles'\nimport { SourcePayloads } from './SourcePayloads'\n\ninterface SourcePayloadConfig {\n fetch: boolean\n sampleSize?: number\n}\n\ninterface ThemeColors {\n dataSetColorPrimary: string\n dataSetColorSecondary: string\n gridColor: string\n}\n\nconst defaultOptions: () => ChartOptions<'line'> = () => ({\n plugins: {\n legend: {\n position: 'top' as const,\n },\n },\n responsive: true,\n})\n\nexport class ForecastLineChartConfigBuilder {\n data: ChartData<'line'> = {\n datasets: [],\n }\n options: ChartOptions<'line'> = defaultOptions()\n themeColors: ThemeColors | undefined\n\n constructor(\n theme: Theme,\n private payload?: ForecastPayload,\n ) {\n this.themeColors = this.parseTheme(theme)\n }\n\n get forecastPayload() {\n if (this.payload) {\n return this.payload\n } else {\n throw Error('ForecastPayload was not defined')\n }\n }\n\n static async create(theme: Theme, payload?: ForecastPayload, sourcePayloadConfig?: SourcePayloadConfig) {\n const instance = new ForecastLineChartConfigBuilder(theme, payload)\n\n await instance.build(sourcePayloadConfig?.fetch)\n\n instance.refreshValues()\n\n return instance\n }\n\n async build(includeSources?: boolean) {\n this.buildOptions()\n await this.buildData(includeSources)\n return this\n }\n\n async buildData(includeSources?: boolean) {\n const forecastData = this.generateDataSetForecastData()\n\n const datasets: ChartDataset<'line'>[] = [forecastData]\n\n if (includeSources) {\n // build data from sources in forecastPayload\n const sourceData = await this.generateDataSetSourcePayloads()\n datasets.unshift(sourceData)\n\n // add last source point as first item in prediction to connect the lines\n const lastSourceDataItem = sourceData.data.at(-1) as Point\n forecastData.data.unshift(lastSourceDataItem)\n }\n\n this.data = {\n datasets,\n }\n\n return this\n }\n\n buildOptions() {\n if (this.options.plugins) {\n this.options.plugins.title = this.generateTitle()\n this.options.plugins.legend = this.generateLegend()\n }\n this.options.scales = this.generateScales()\n\n return this\n }\n\n refreshValues() {\n this.data = { ...this.data }\n this.options = { ...this.options }\n }\n\n protected generateLegend(): _DeepPartialObject<LegendOptions<'line'>> {\n return {\n labels: {\n pointStyle: 'circle',\n usePointStyle: true,\n },\n }\n }\n\n protected generateScales(): _DeepPartialObject<ScaleChartOptions<'line'>['scales']> {\n return {\n x: {\n grid: {\n color: this.themeColors?.gridColor,\n },\n time: {\n unit: 'minute',\n },\n type: 'time',\n },\n y: {\n grid: {\n color: this.themeColors?.gridColor,\n },\n },\n }\n }\n\n protected generateTitle() {\n return {\n display: true,\n text: `Gas Price Forecaster (GWEI over time from ${\n this.forecastPayload?.values[0].timestamp ? new Date(this.forecastPayload.values[0].timestamp).toLocaleDateString() : ''\n })`,\n }\n }\n\n protected parseTheme(theme: Theme) {\n const dark = theme.palette.mode === 'dark'\n return {\n dataSetColorPrimary: theme.palette.primary.light,\n dataSetColorSecondary: theme.palette.secondary.light,\n gridColor: dark ? theme.palette.grey[800] : theme.palette.grey[300],\n }\n }\n\n private generateDataSetForecastData(): ChartDataset<'line'> {\n return {\n borderDash: [5],\n borderDashOffset: 0.5,\n data: this.forecastPayload.values.map((price) => ({ x: price.timestamp ?? 0, y: price.value })),\n label: 'Forecast Price',\n ...DataPointStyles(this.themeColors?.dataSetColorPrimary),\n ...DataLineStyles(this.themeColors?.dataSetColorPrimary),\n }\n }\n\n private async generateDataSetSourcePayloads(): Promise<ChartDataset<'line'>> {\n const { sourcePrices } = await SourcePayloads.build('feePerGas.medium')\n return {\n data: sourcePrices,\n label: 'Source Prices',\n ...DataLineStyles(this.themeColors?.dataSetColorSecondary),\n ...DataPointStyles(this.themeColors?.dataSetColorSecondary),\n }\n }\n}\n"],"mappings":"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","names":[]}