mirror of
https://github.com/chartjs/Chart.js.git
synced 2025-12-08 20:36:08 +00:00
Add missing typings of helpers, add automatic test (#9570)
* Add missing typings of helpers, add automatic test * Add error handling to autogen.js
This commit is contained in:
parent
fca0309223
commit
3ed94559dd
3
.gitignore
vendored
3
.gitignore
vendored
@ -27,3 +27,6 @@ docs/api
|
||||
*.log
|
||||
*.swp
|
||||
*.stackdump
|
||||
|
||||
# Generated
|
||||
/types/tests/autogen*.ts
|
||||
|
||||
18
package-lock.json
generated
18
package-lock.json
generated
@ -30,6 +30,7 @@
|
||||
"eslint-plugin-es": "^4.1.0",
|
||||
"eslint-plugin-html": "^6.1.2",
|
||||
"eslint-plugin-markdown": "^2.1.0",
|
||||
"esm": "^3.2.25",
|
||||
"glob": "^7.1.6",
|
||||
"jasmine": "^3.7.0",
|
||||
"jasmine-core": "^3.7.1",
|
||||
@ -7840,6 +7841,15 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/esm": {
|
||||
"version": "3.2.25",
|
||||
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
|
||||
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/espree": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
|
||||
@ -20863,7 +20873,6 @@
|
||||
"integrity": "sha512-pM7CR3yXB6L8Gfn6EmX7FLNE3+V/15I3o33GkSNsWvgsMp6HVGXKkXgojrcfUUauyL1LZOdvTmu4enU2RePGHw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/core": "^7.11.0",
|
||||
"@babel/helper-compilation-targets": "^7.9.6",
|
||||
"@babel/helper-module-imports": "^7.8.3",
|
||||
"@babel/plugin-proposal-class-properties": "^7.8.3",
|
||||
@ -20876,7 +20885,6 @@
|
||||
"@vue/babel-plugin-jsx": "^1.0.3",
|
||||
"@vue/babel-preset-jsx": "^1.2.4",
|
||||
"babel-plugin-dynamic-import-node": "^2.3.3",
|
||||
"core-js": "^3.6.5",
|
||||
"core-js-compat": "^3.6.5",
|
||||
"semver": "^6.1.0"
|
||||
},
|
||||
@ -25335,6 +25343,12 @@
|
||||
"integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
|
||||
"dev": true
|
||||
},
|
||||
"esm": {
|
||||
"version": "3.2.25",
|
||||
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
|
||||
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
|
||||
"dev": true
|
||||
},
|
||||
"espree": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
|
||||
|
||||
@ -44,7 +44,7 @@
|
||||
"lint-js": "eslint \"src/**/*.js\" \"test/**/*.js\" \"docs/**/*.js\"",
|
||||
"lint-md": "eslint \"**/*.md\"",
|
||||
"lint-tsc": "tsc",
|
||||
"lint-types": "eslint \"types/**/*.ts\" && tsc -p types/tests/",
|
||||
"lint-types": "eslint \"types/**/*.ts\" && node -r esm types/tests/autogen.js && tsc -p types/tests/",
|
||||
"lint": "concurrently \"npm:lint-*\"",
|
||||
"test": "npm run lint && cross-env NODE_ENV=test karma start --auto-watch --single-run --coverage --grep"
|
||||
},
|
||||
@ -70,6 +70,7 @@
|
||||
"eslint-plugin-es": "^4.1.0",
|
||||
"eslint-plugin-html": "^6.1.2",
|
||||
"eslint-plugin-markdown": "^2.1.0",
|
||||
"esm": "^3.2.25",
|
||||
"glob": "^7.1.6",
|
||||
"jasmine": "^3.7.0",
|
||||
"jasmine-core": "^3.7.1",
|
||||
|
||||
24
types/geometric.d.ts
vendored
24
types/geometric.d.ts
vendored
@ -11,3 +11,27 @@ export interface Point {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
|
||||
export type TRBL = {
|
||||
top: number;
|
||||
right: number;
|
||||
bottom: number;
|
||||
left: number;
|
||||
}
|
||||
|
||||
export type TRBLCorners = {
|
||||
topLeft: number;
|
||||
topRight: number;
|
||||
bottomLeft: number;
|
||||
bottomRight: number;
|
||||
};
|
||||
|
||||
export type CornerRadius = number | Partial<TRBLCorners>;
|
||||
|
||||
export type RoundedRect = {
|
||||
x: number;
|
||||
y: number;
|
||||
w: number;
|
||||
h: number;
|
||||
radius?: CornerRadius
|
||||
}
|
||||
|
||||
4
types/helpers/helpers.canvas.d.ts
vendored
4
types/helpers/helpers.canvas.d.ts
vendored
@ -1,6 +1,6 @@
|
||||
import { PointStyle } from '../index.esm';
|
||||
import { Color } from '../color';
|
||||
import { ChartArea } from '../geometric';
|
||||
import { ChartArea, RoundedRect } from '../geometric';
|
||||
import { CanvasFontSpec } from './helpers.options';
|
||||
|
||||
export function clearCanvas(canvas: HTMLCanvasElement, ctx?: CanvasRenderingContext2D): void;
|
||||
@ -97,3 +97,5 @@ export function renderText(
|
||||
font: CanvasFontSpec,
|
||||
opts?: RenderTextOpts
|
||||
): void;
|
||||
|
||||
export function addRoundedRectPath(ctx: CanvasRenderingContext2D, rect: RoundedRect): void;
|
||||
|
||||
17
types/helpers/helpers.core.d.ts
vendored
17
types/helpers/helpers.core.d.ts
vendored
@ -38,6 +38,15 @@ export function isObject(value: unknown): value is AnyObject;
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function isFinite(value: unknown): value is number;
|
||||
|
||||
/**
|
||||
* Returns `value` if finite, else returns `defaultValue`.
|
||||
* @param {*} value - The value to return if defined.
|
||||
* @param {*} defaultValue - The value to return if `value` is not finite.
|
||||
* @returns {*}
|
||||
*/
|
||||
export function finiteOrDefault(value: unknown, defaultValue: number): number;
|
||||
|
||||
/**
|
||||
* Returns `value` if defined, else returns `defaultValue`.
|
||||
* @param {*} value - The value to return if defined.
|
||||
@ -45,6 +54,10 @@ export function isFinite(value: unknown): value is number;
|
||||
* @returns {*}
|
||||
*/
|
||||
export function valueOrDefault<T>(value: T | undefined, defaultValue: T): T;
|
||||
|
||||
export function toPercentage(value: number | string, dimesion: number): number;
|
||||
export function toDimension(value: number | string, dimension: number): number;
|
||||
|
||||
/**
|
||||
* Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the
|
||||
* value returned by `fn`. If `fn` is not a function, this method returns undefined.
|
||||
@ -137,4 +150,8 @@ export function mergeIf<T>(target: T, source: AnyObject[]): AnyObject;
|
||||
|
||||
export function resolveObjectKey(obj: AnyObject, key: string): AnyObject;
|
||||
|
||||
export function defined(value: unknown): boolean;
|
||||
|
||||
export function isFunction(value: unknown): boolean;
|
||||
|
||||
export function setsEqual(a: Set<unknown>, b: Set<unknown>): boolean;
|
||||
|
||||
1
types/helpers/helpers.dom.d.ts
vendored
1
types/helpers/helpers.dom.d.ts
vendored
@ -15,3 +15,4 @@ export function retinaScale(
|
||||
forceRatio: number,
|
||||
forceStyle?: boolean
|
||||
): void;
|
||||
export function readUsedSize(element: HTMLElement, property: 'width' | 'height'): number | undefined;
|
||||
|
||||
1
types/helpers/helpers.math.d.ts
vendored
1
types/helpers/helpers.math.d.ts
vendored
@ -3,6 +3,7 @@ export function isNumber(v: unknown): boolean;
|
||||
export function almostEquals(x: number, y: number, epsilon: number): boolean;
|
||||
export function almostWhole(x: number, epsilon: number): number;
|
||||
export function sign(x: number): number;
|
||||
export function niceNum(range: number): number;
|
||||
export function toRadians(degrees: number): number;
|
||||
export function toDegrees(radians: number): number;
|
||||
/**
|
||||
|
||||
4
types/helpers/helpers.options.d.ts
vendored
4
types/helpers/helpers.options.d.ts
vendored
@ -1,3 +1,4 @@
|
||||
import { TRBL, TRBLCorners } from '../geometric';
|
||||
import { FontSpec } from '../index.esm';
|
||||
|
||||
export interface CanvasFontSpec extends FontSpec {
|
||||
@ -20,6 +21,9 @@ export function toFont(options: Partial<FontSpec>): CanvasFontSpec;
|
||||
*/
|
||||
export function toLineHeight(value: string, size: number): number;
|
||||
|
||||
export function toTRBL(value: number | Partial<TRBL>): TRBL;
|
||||
export function toTRBLCorners(value: number | Partial<TRBLCorners>): TRBLCorners;
|
||||
|
||||
/**
|
||||
* Converts the given value into a padding object with pre-computed width/height.
|
||||
* @param {number|object} value - If a number, set the value to all TRBL component;
|
||||
|
||||
22
types/tests/autogen.js
Normal file
22
types/tests/autogen.js
Normal file
@ -0,0 +1,22 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as helpers from '../../src/helpers/index.js';
|
||||
|
||||
let fd;
|
||||
|
||||
try {
|
||||
const fn = path.resolve(__dirname, 'autogen_helpers.ts');
|
||||
fd = fs.openSync(fn, 'w+');
|
||||
fs.writeSync(fd, 'import * as helpers from \'../helpers\';\n\n');
|
||||
|
||||
fs.writeSync(fd, 'const testKeys = [];\n');
|
||||
for (const key of Object.keys(helpers)) {
|
||||
if (key[0] !== '_' && typeof helpers[key] === 'function') {
|
||||
fs.writeSync(fd, `testKeys.push(helpers.${key});\n`);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
if (fd !== undefined) {
|
||||
fs.closeSync(fd);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user