@visactor/vchart-extension 2.0.7-alpha.1 → 2.0.7-alpha.4

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 (71) hide show
  1. package/build/index.js +1054 -0
  2. package/build/index.min.js +2 -2
  3. package/cjs/charts/candlestick/candlestick.js +2 -1
  4. package/cjs/charts/combination-candlestick/combination-candlestick.js +1 -2
  5. package/cjs/charts/conversion-funnel/arrow-data-transform.js +0 -1
  6. package/cjs/charts/funnel-3d/chart.js +2 -1
  7. package/cjs/components/bar-regression-line/index.d.ts +26 -0
  8. package/cjs/components/bar-regression-line/index.js +87 -0
  9. package/cjs/components/bar-regression-line/index.js.map +1 -0
  10. package/cjs/components/bar-regression-line/type.d.ts +8 -0
  11. package/cjs/components/bar-regression-line/type.js +6 -0
  12. package/cjs/components/bar-regression-line/type.js.map +1 -0
  13. package/cjs/components/histogram-regression-line/index.d.ts +22 -0
  14. package/cjs/components/histogram-regression-line/index.js +79 -0
  15. package/cjs/components/histogram-regression-line/index.js.map +1 -0
  16. package/cjs/components/histogram-regression-line/type.d.ts +8 -0
  17. package/cjs/components/histogram-regression-line/type.js +6 -0
  18. package/cjs/components/histogram-regression-line/type.js.map +1 -0
  19. package/cjs/components/regression-line/index.d.ts +2 -0
  20. package/cjs/components/regression-line/index.js +21 -0
  21. package/cjs/components/regression-line/index.js.map +1 -0
  22. package/cjs/components/regression-line/regression-line.d.ts +8 -0
  23. package/cjs/components/regression-line/regression-line.js +58 -0
  24. package/cjs/components/regression-line/regression-line.js.map +1 -0
  25. package/cjs/components/regression-line/type.d.ts +30 -0
  26. package/cjs/components/regression-line/type.js +6 -0
  27. package/cjs/components/regression-line/type.js.map +1 -0
  28. package/cjs/components/scatter-regression-line/index.d.ts +25 -0
  29. package/cjs/components/scatter-regression-line/index.js +103 -0
  30. package/cjs/components/scatter-regression-line/index.js.map +1 -0
  31. package/cjs/components/scatter-regression-line/type.d.ts +9 -0
  32. package/cjs/components/scatter-regression-line/type.js +6 -0
  33. package/cjs/components/scatter-regression-line/type.js.map +1 -0
  34. package/cjs/index.d.ts +4 -0
  35. package/cjs/index.js +3 -1
  36. package/cjs/index.js.map +1 -1
  37. package/esm/charts/candlestick/candlestick.js +2 -1
  38. package/esm/charts/combination-candlestick/combination-candlestick.js +1 -2
  39. package/esm/charts/conversion-funnel/arrow-data-transform.js +1 -2
  40. package/esm/charts/funnel-3d/chart.js +2 -1
  41. package/esm/components/bar-regression-line/index.d.ts +26 -0
  42. package/esm/components/bar-regression-line/index.js +80 -0
  43. package/esm/components/bar-regression-line/index.js.map +1 -0
  44. package/esm/components/bar-regression-line/type.d.ts +8 -0
  45. package/esm/components/bar-regression-line/type.js +2 -0
  46. package/esm/components/bar-regression-line/type.js.map +1 -0
  47. package/esm/components/histogram-regression-line/index.d.ts +22 -0
  48. package/esm/components/histogram-regression-line/index.js +75 -0
  49. package/esm/components/histogram-regression-line/index.js.map +1 -0
  50. package/esm/components/histogram-regression-line/type.d.ts +8 -0
  51. package/esm/components/histogram-regression-line/type.js +2 -0
  52. package/esm/components/histogram-regression-line/type.js.map +1 -0
  53. package/esm/components/regression-line/index.d.ts +2 -0
  54. package/esm/components/regression-line/index.js +4 -0
  55. package/esm/components/regression-line/index.js.map +1 -0
  56. package/esm/components/regression-line/regression-line.d.ts +8 -0
  57. package/esm/components/regression-line/regression-line.js +54 -0
  58. package/esm/components/regression-line/regression-line.js.map +1 -0
  59. package/esm/components/regression-line/type.d.ts +30 -0
  60. package/esm/components/regression-line/type.js +2 -0
  61. package/esm/components/regression-line/type.js.map +1 -0
  62. package/esm/components/scatter-regression-line/index.d.ts +25 -0
  63. package/esm/components/scatter-regression-line/index.js +99 -0
  64. package/esm/components/scatter-regression-line/index.js.map +1 -0
  65. package/esm/components/scatter-regression-line/type.d.ts +9 -0
  66. package/esm/components/scatter-regression-line/type.js +2 -0
  67. package/esm/components/scatter-regression-line/type.js.map +1 -0
  68. package/esm/index.d.ts +4 -0
  69. package/esm/index.js +9 -1
  70. package/esm/index.js.map +1 -1
  71. package/package.json +11 -11
@@ -0,0 +1,99 @@
1
+ var __rest = this && this.__rest || function(s, e) {
2
+ var t = {};
3
+ for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]);
4
+ if (null != s && "function" == typeof Object.getOwnPropertySymbols) {
5
+ var i = 0;
6
+ for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]);
7
+ }
8
+ return t;
9
+ };
10
+
11
+ import { array, clamper, get, regressionLinear, regressionLogistic, regressionLowess, regressionPolynomial } from "@visactor/vutils";
12
+
13
+ import { SeriesTypeEnum } from "@visactor/vchart";
14
+
15
+ import { REGRESSION_LINE } from "../regression-line/regression-line";
16
+
17
+ const getRegressionByType = (type, data, x = (d => d.x), y = (d => d.y), degree) => {
18
+ switch (type) {
19
+ case "logisitc":
20
+ return regressionLogistic(data, x, y);
21
+
22
+ case "lowess":
23
+ return regressionLowess(data, x, y);
24
+
25
+ case "polynomial":
26
+ return regressionPolynomial(data, x, y, {
27
+ degree: degree
28
+ });
29
+
30
+ default:
31
+ return regressionLinear(data, x, y);
32
+ }
33
+ };
34
+
35
+ export function getScatterRegressionLineConfig(type, config) {
36
+ const {color: color, line: line, confidenceInterval: confidenceInterval, label: label} = config;
37
+ return {
38
+ type: "component",
39
+ componentType: REGRESSION_LINE,
40
+ interactive: !1,
41
+ style: {
42
+ data: (datum, ctx) => {
43
+ const series = ctx.vchart.getChart().getAllSeries().filter((s => s.type === SeriesTypeEnum.scatter)), regressionData = [];
44
+ return series && series.length && series.forEach((s => {
45
+ var _a, _b;
46
+ const start = s.getRegion().getLayoutStartPoint(), rect = s.getRegion().getLayoutRect(), yClamper = clamper(start.y, start.y + rect.height), colorAttrOptions = s.getColorAttribute(), groups = s.getSeriesKeys(), data = s.getViewData().latestData, fieldX = null === (_a = s.fieldX) || void 0 === _a ? void 0 : _a[0], fieldY = null === (_b = s.fieldY) || void 0 === _b ? void 0 : _b[0];
47
+ fieldX && fieldY && data && !(data.length <= 2) && groups.forEach((group => {
48
+ var _a;
49
+ const groupData = data.filter((d => d[null == colorAttrOptions ? void 0 : colorAttrOptions.field] === group));
50
+ if (!groupData.length) return;
51
+ const {evaluateGrid: evaluateGrid, confidenceInterval: confidenceInterval} = getRegressionByType(type, groupData, (datum => null == datum ? void 0 : datum[fieldX]), (datum => null == datum ? void 0 : datum[fieldY]), config.polynomialDegree), N = Math.max(3, Math.floor(groupData.length / 4)), lineData = evaluateGrid(N), confidenceData = confidenceInterval(N);
52
+ regressionData.push({
53
+ color: null != color ? color : null === (_a = null == colorAttrOptions ? void 0 : colorAttrOptions.scale) || void 0 === _a ? void 0 : _a.scale(group),
54
+ line: lineData.map((ld => {
55
+ const d = {
56
+ [fieldX]: ld.x,
57
+ [fieldY]: ld.y
58
+ };
59
+ return {
60
+ x: s.dataToPositionX(d) + start.x,
61
+ y: yClamper("logisitc" === type ? start.y + rect.height * (1 - ld.y) : s.dataToPositionY(d) + start.y)
62
+ };
63
+ })),
64
+ area: confidenceData.map((c => {
65
+ const d = {
66
+ [fieldX]: c.x,
67
+ [fieldY]: c.lower
68
+ };
69
+ return {
70
+ x: s.dataToPositionX(d) + start.x,
71
+ y: yClamper(s.dataToPositionY(d) + start.y),
72
+ y1: yClamper(s.dataToPositionY({
73
+ [fieldY]: c.upper
74
+ }) + start.y)
75
+ };
76
+ }))
77
+ });
78
+ }));
79
+ })), regressionData;
80
+ },
81
+ line: line,
82
+ confidenceInterval: confidenceInterval,
83
+ label: label
84
+ }
85
+ };
86
+ }
87
+
88
+ export function appendScatterRegressionLineConfig(chartSpec, spec) {
89
+ var _a, _b;
90
+ spec || (spec = null !== (_a = get(chartSpec, REGRESSION_LINE)) && void 0 !== _a ? _a : get(null === (_b = chartSpec.series) || void 0 === _b ? void 0 : _b.find((s => s.type === SeriesTypeEnum.scatter)), REGRESSION_LINE));
91
+ array(spec).forEach((s => {
92
+ if (!1 !== s.visible) {
93
+ chartSpec.customMark || (chartSpec.customMark = []);
94
+ const {type: type} = s, rest = __rest(s, [ "type" ]);
95
+ chartSpec.customMark.push(getScatterRegressionLineConfig(type, rest));
96
+ }
97
+ }));
98
+ }
99
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/scatter-regression-line/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @description 散点图回归线组件\n * @author kangxiaoting\n */\nimport {\n array,\n clamper,\n get,\n regressionLinear,\n regressionLogistic,\n regressionLowess,\n regressionPolynomial\n} from '@visactor/vutils';\nimport type { Datum, ICartesianSeries, ISpec } from '@visactor/vchart';\nimport { SeriesTypeEnum } from '@visactor/vchart';\nimport type { ScatterRegressionLineSpec } from './type';\nimport type { RegressionLineData } from '../regression-line/type';\nimport { REGRESSION_LINE } from '../regression-line/regression-line';\n\nconst getRegressionByType = (\n type: 'linear' | 'logisitc' | 'lowess' | 'polynomial',\n data: any[],\n x: (d: any) => number = d => d.x,\n y: (d: any) => number = d => d.y,\n degree?: number\n) => {\n switch (type) {\n case 'logisitc':\n return regressionLogistic(data, x, y);\n case 'lowess':\n return regressionLowess(data, x, y);\n case 'polynomial':\n return regressionPolynomial(data, x, y, { degree });\n default:\n return regressionLinear(data, x, y);\n }\n};\n\n/**\n * 获取系列标签的 spec 配置\n * @param position 显示位置\n * @param config 系列标签的样式配置\n * @returns\n */\nexport function getScatterRegressionLineConfig(\n type: 'linear' | 'logisitc' | 'lowess' | 'polynomial',\n config: Omit<ScatterRegressionLineSpec, 'visible' | 'type'>\n) {\n const { color, line, confidenceInterval, label } = config;\n return {\n type: 'component',\n componentType: REGRESSION_LINE,\n interactive: false,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart;\n const chart = vchart.getChart();\n const series = chart.getAllSeries().filter((s: any) => s.type === SeriesTypeEnum.scatter) as ICartesianSeries[];\n const regressionData: RegressionLineData[] = [];\n\n // 必须存在散点图系列\n if (series && series.length) {\n series.forEach(s => {\n const start = s.getRegion().getLayoutStartPoint();\n const rect = s.getRegion().getLayoutRect();\n const yClamper = clamper(start.y, start.y + rect.height);\n const colorAttrOptions = s.getColorAttribute();\n const groups = s.getSeriesKeys();\n const data = s.getViewData().latestData;\n const fieldX = s.fieldX?.[0];\n const fieldY = s.fieldY?.[0];\n\n if (!fieldX || !fieldY || !data || data.length <= 2) {\n return;\n }\n\n groups.forEach(group => {\n const groupData = data.filter((d: Datum) => d[colorAttrOptions?.field] === group);\n\n if (!groupData.length) {\n return;\n }\n const { evaluateGrid, confidenceInterval } = getRegressionByType(\n type,\n groupData,\n (datum: Datum) => datum?.[fieldX],\n (datum: Datum) => datum?.[fieldY],\n config.polynomialDegree\n );\n const N = Math.max(3, Math.floor(groupData.length / 4));\n const lineData = evaluateGrid(N);\n const confidenceData = confidenceInterval(N);\n\n regressionData.push({\n color: color ?? colorAttrOptions?.scale?.scale(group),\n line: lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x, [fieldY]: ld.y };\n return {\n x: s.dataToPositionX(d) + start.x,\n y: yClamper(\n type === 'logisitc' ? start.y + rect.height * (1 - ld.y) : s.dataToPositionY(d) + start.y\n )\n };\n }),\n area: confidenceData.map((c: Datum) => {\n const d = { [fieldX]: c.x, [fieldY]: c.lower };\n return {\n x: s.dataToPositionX(d) + start.x,\n y: yClamper(s.dataToPositionY(d) + start.y),\n y1: yClamper(s.dataToPositionY({ [fieldY]: c.upper }) + start.y)\n };\n })\n });\n });\n });\n }\n\n return regressionData;\n },\n line,\n confidenceInterval,\n label\n }\n };\n}\n\nexport function appendScatterRegressionLineConfig(\n chartSpec: ISpec,\n spec?: ScatterRegressionLineSpec | ScatterRegressionLineSpec[]\n) {\n if (!spec) {\n spec =\n get(chartSpec, REGRESSION_LINE) ??\n get(\n chartSpec.series?.find(s => s.type === SeriesTypeEnum.scatter),\n REGRESSION_LINE\n );\n }\n\n const specs = array(spec);\n\n specs.forEach((s: ScatterRegressionLineSpec) => {\n if (s.visible !== false) {\n if (!(chartSpec as any).customMark) {\n (chartSpec as any).customMark = [];\n }\n\n const { type, ...rest } = s;\n (chartSpec as any).customMark.push(getScatterRegressionLineConfig(type, rest));\n }\n });\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { RegressionLineAttrs } from '../regression-line/type';
2
+ export interface ScatterRegressionLineAttrs extends RegressionLineAttrs {
3
+ type: 'linear' | 'logisitc' | 'lowess' | 'polynomial';
4
+ polynomialDegree?: number;
5
+ }
6
+ export interface ScatterRegressionLineSpec extends Partial<Pick<ScatterRegressionLineAttrs, 'type' | 'polynomialDegree' | 'line' | 'label' | 'confidenceInterval'>> {
7
+ visible?: boolean;
8
+ color?: string;
9
+ }
@@ -0,0 +1,2 @@
1
+ export { };
2
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/scatter-regression-line/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type { RegressionLineAttrs } from '../regression-line/type';\n\nexport interface ScatterRegressionLineAttrs extends RegressionLineAttrs {\n type: 'linear' | 'logisitc' | 'lowess' | 'polynomial';\n /**\n * 多项式回归的阶数,仅当 type 为 polynomial 时有效\n */\n polynomialDegree?: number;\n}\n\nexport interface ScatterRegressionLineSpec\n extends Partial<\n Pick<ScatterRegressionLineAttrs, 'type' | 'polynomialDegree' | 'line' | 'label' | 'confidenceInterval'>\n > {\n /**\n * 是否显示回归线\n */\n visible?: boolean;\n /**\n * 主色,可以不设置,默认取散点图系列颜色\n */\n color?: string;\n}\n"]}
package/esm/index.d.ts CHANGED
@@ -20,3 +20,7 @@ export * from './components/series-break';
20
20
  export * from './components/bar-link';
21
21
  export * from './components/series-label';
22
22
  export * from './components/map-label';
23
+ export * from './components/regression-line';
24
+ export * from './components/scatter-regression-line';
25
+ export * from './components/bar-regression-line';
26
+ export * from './components/histogram-regression-line';
package/esm/index.js CHANGED
@@ -40,4 +40,12 @@ export * from "./components/bar-link";
40
40
 
41
41
  export * from "./components/series-label";
42
42
 
43
- export * from "./components/map-label";
43
+ export * from "./components/map-label";
44
+
45
+ export * from "./components/regression-line";
46
+
47
+ export * from "./components/scatter-regression-line";
48
+
49
+ export * from "./components/bar-regression-line";
50
+
51
+ export * from "./components/histogram-regression-line";
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sDAAsD,CAAC;AACrE,cAAc,oDAAoD,CAAC;AACnE,cAAc,wDAAwD,CAAC;AAEvE,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAErC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC","file":"index.js","sourcesContent":["export * from './charts/ranking-bar/ranking-bar';\nexport * from './charts/ranking-list/ranking-list';\nexport * from './charts/conversion-funnel';\nexport * from './charts/sequence-scatter-link/sequence-scatter-link';\nexport * from './charts/sequence-scatter-kde/sequence-scatter-kde';\nexport * from './charts/sequence-scatter-pixel/sequence-scatter-pixel';\n\nexport * from './charts/bar-3d';\nexport * from './charts/funnel-3d';\nexport * from './charts/histogram-3d';\nexport * from './charts/pie-3d';\nexport * from './charts/combination-candlestick';\nexport * from './charts/word-cloud-3d';\nexport * from './charts/axis-3d';\nexport * from './charts/range-column-3d';\nexport { register3DPlugin } from './charts/3d/plugin';\nexport * from './charts/pictogram';\nexport * from './charts/image-cloud';\nexport * from './charts/candlestick';\n\nexport * from './components/series-break';\nexport * from './components/bar-link';\nexport * from './components/series-label';\nexport * from './components/map-label';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sDAAsD,CAAC;AACrE,cAAc,oDAAoD,CAAC;AACnE,cAAc,wDAAwD,CAAC;AAEvE,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAErC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC","file":"index.js","sourcesContent":["export * from './charts/ranking-bar/ranking-bar';\nexport * from './charts/ranking-list/ranking-list';\nexport * from './charts/conversion-funnel';\nexport * from './charts/sequence-scatter-link/sequence-scatter-link';\nexport * from './charts/sequence-scatter-kde/sequence-scatter-kde';\nexport * from './charts/sequence-scatter-pixel/sequence-scatter-pixel';\n\nexport * from './charts/bar-3d';\nexport * from './charts/funnel-3d';\nexport * from './charts/histogram-3d';\nexport * from './charts/pie-3d';\nexport * from './charts/combination-candlestick';\nexport * from './charts/word-cloud-3d';\nexport * from './charts/axis-3d';\nexport * from './charts/range-column-3d';\nexport { register3DPlugin } from './charts/3d/plugin';\nexport * from './charts/pictogram';\nexport * from './charts/image-cloud';\nexport * from './charts/candlestick';\n\nexport * from './components/series-break';\nexport * from './components/bar-link';\nexport * from './components/series-label';\nexport * from './components/map-label';\nexport * from './components/regression-line';\nexport * from './components/scatter-regression-line';\nexport * from './components/bar-regression-line';\nexport * from './components/histogram-regression-line';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vchart-extension",
3
- "version": "2.0.7-alpha.1",
3
+ "version": "2.0.7-alpha.4",
4
4
  "description": "vchart extension package, including extension plugins and components",
5
5
  "sideEffects": false,
6
6
  "main": "cjs/index.js",
@@ -12,14 +12,14 @@
12
12
  "build"
13
13
  ],
14
14
  "dependencies": {
15
- "@visactor/vrender-core": "~1.0.18",
16
- "@visactor/vrender-kits": "~1.0.18",
17
- "@visactor/vrender-components": "~1.0.18",
18
- "@visactor/vrender-animate": "~1.0.18",
19
- "@visactor/vutils": "~1.0.6",
20
- "@visactor/vdataset": "~1.0.6",
21
- "@visactor/vlayouts": "~1.0.6",
22
- "@visactor/vchart": "2.0.7-alpha.1"
15
+ "@visactor/vrender-core": "~1.0.21",
16
+ "@visactor/vrender-kits": "~1.0.21",
17
+ "@visactor/vrender-components": "~1.0.21",
18
+ "@visactor/vrender-animate": "~1.0.21",
19
+ "@visactor/vchart": "2.0.7-alpha.4",
20
+ "@visactor/vutils": "~1.0.12",
21
+ "@visactor/vdataset": "~1.0.12",
22
+ "@visactor/vlayouts": "~1.0.12"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@rushstack/eslint-patch": "~1.1.4",
@@ -43,9 +43,9 @@
43
43
  "rollup-plugin-bundle-size": "1.0.3",
44
44
  "rollup-plugin-sizes": "1.0.5",
45
45
  "rollup": "3.20.5",
46
- "@internal/eslint-config": "0.0.1",
46
+ "@internal/ts-config": "0.0.1",
47
47
  "@internal/bundler": "0.0.1",
48
- "@internal/ts-config": "0.0.1"
48
+ "@internal/eslint-config": "0.0.1"
49
49
  },
50
50
  "publishConfig": {
51
51
  "access": "public",