diff --git a/build/build.js b/build/build.js index d224b06..8d026e0 100755 --- a/build/build.js +++ b/build/build.js @@ -128,7 +128,7 @@ function createRollupConfig({ min } = {}) { module: 'ES2015', sourceMap: true, // Use the esm d.ts - declaration: false + declaration: true } // include: include, // exclude: exclude || [] diff --git a/dist/aggregate.d.ts b/dist/aggregate.d.ts new file mode 100644 index 0000000..19ab71b --- /dev/null +++ b/dist/aggregate.d.ts @@ -0,0 +1,27 @@ +import { DataTransformOption, DimensionLoose, DimensionName, ExternalDataTransform } from './types'; +export interface AggregateTransformOption extends DataTransformOption { + type: 'ecSimpleTransform:aggregate'; + config: { + resultDimensions: { + name: DimensionName; + from: DimensionLoose; + method: AggregateMethodLoose; + }[]; + groupBy: DimensionLoose; + }; +} +declare const METHOD_INTERNAL: { + readonly SUM: true; + readonly COUNT: true; + readonly FIRST: true; + readonly AVERAGE: true; + readonly Q1: true; + readonly Q2: true; + readonly Q3: true; + readonly MIN: true; + readonly MAX: true; +}; +declare type AggregateMethodLoose = AggregateMethodInternal | 'sum' | 'count' | 'first' | 'average' | 'Q1' | 'Q2' | 'Q3' | 'median' | 'min' | 'max'; +declare type AggregateMethodInternal = keyof typeof METHOD_INTERNAL; +export declare const transform: ExternalDataTransform; +export {}; diff --git a/dist/id.d.ts b/dist/id.d.ts new file mode 100644 index 0000000..9da1c4d --- /dev/null +++ b/dist/id.d.ts @@ -0,0 +1,9 @@ +import { DataTransformOption, DimensionIndex, DimensionName, ExternalDataTransform } from './types'; +export interface IdTransformOption extends DataTransformOption { + type: 'ecSimpleTransform:id'; + config: { + dimensionIndex: DimensionIndex; + dimensionName: DimensionName; + }; +} +export declare const transform: ExternalDataTransform; diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..8f86b24 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,2 @@ +export { transform as id } from './id'; +export { transform as aggregate } from './aggregate'; diff --git a/dist/types.d.ts b/dist/types.d.ts new file mode 100644 index 0000000..82ac96e --- /dev/null +++ b/dist/types.d.ts @@ -0,0 +1,73 @@ +export declare type Dictionary = { + [key: string]: T; +}; +export declare type DimensionIndex = number; +export declare type DimensionName = string; +export declare type DimensionIndexLoose = DimensionIndex | string; +export declare type DimensionLoose = DimensionName | DimensionIndexLoose; +export declare type DataTransformType = string; +export declare type DataTransformConfig = unknown; +export declare type ParsedValue = ParsedValueNumeric | OrdinalRawValue; +export declare type ParsedValueNumeric = number | OrdinalNumber; +export declare type OrdinalRawValue = string | number; +export declare type OrdinalNumber = number; +export declare const SOURCE_FORMAT_ORIGINAL: "original"; +export declare const SOURCE_FORMAT_ARRAY_ROWS: "arrayRows"; +export declare const SOURCE_FORMAT_OBJECT_ROWS: "objectRows"; +export declare const SOURCE_FORMAT_KEYED_COLUMNS: "keyedColumns"; +export declare const SOURCE_FORMAT_TYPED_ARRAY: "typedArray"; +export declare const SOURCE_FORMAT_UNKNOWN: "unknown"; +export declare type SourceFormat = typeof SOURCE_FORMAT_ORIGINAL | typeof SOURCE_FORMAT_ARRAY_ROWS | typeof SOURCE_FORMAT_OBJECT_ROWS | typeof SOURCE_FORMAT_KEYED_COLUMNS | typeof SOURCE_FORMAT_TYPED_ARRAY | typeof SOURCE_FORMAT_UNKNOWN; +declare const dataCtors: { + float: Float64ArrayConstructor | ArrayConstructor; + int: ArrayConstructor | Int32ArrayConstructor; + ordinal: ArrayConstructor; + number: ArrayConstructor; + time: ArrayConstructor; +}; +export declare type ListDimensionType = keyof typeof dataCtors; +export declare type DimensionDefinition = { + type?: ListDimensionType; + name?: DimensionName; + displayName?: string; +}; +export declare type DimensionDefinitionLoose = DimensionDefinition['name'] | DimensionDefinition; +export interface DataTransformOption { + type: DataTransformType; + config: DataTransformConfig; + print?: boolean; +} +export declare type OptionDataValue = string | number | Date; +export declare type OptionSourceDataArrayRows = Array>; +export declare type OptionSourceDataObjectRows = Array>; +export interface ExternalDataTransform { + type: string; + __isBuiltIn?: boolean; + transform: (param: ExternalDataTransformParam) => ExternalDataTransformResultItem | ExternalDataTransformResultItem[]; +} +interface ExternalDataTransformParam { + upstream: ExternalSource; + upstreamList: ExternalSource[]; + config: TO['config']; +} +export interface ExternalDataTransformResultItem { + data: OptionSourceDataArrayRows | OptionSourceDataObjectRows; + dimensions?: DimensionDefinitionLoose[]; +} +export declare type DataTransformDataItem = ExternalDataTransformResultItem['data'][number]; +export interface ExternalDimensionDefinition extends Partial { + index: DimensionIndex; +} +export interface ExternalSource { + sourceFormat: SourceFormat; + getRawDataItem(dataIndex: number): number; + getRawDataItem(dataIndex: number): DataTransformDataItem; + cloneRawData(): OptionSourceDataArrayRows | OptionSourceDataObjectRows; + getDimensionInfo(dim: DimensionLoose): ExternalDimensionDefinition; + cloneAllDimensionInfo(): ExternalDimensionDefinition[]; + count(): number; + retrieveValue(dataIndex: number, dimIndex: DimensionIndex): OptionDataValue; + retrieveValueFromItem(dataItem: DataTransformDataItem, dimIndex: DimensionIndex): OptionDataValue; + convertValue(rawVal: unknown, dimInfo: ExternalDimensionDefinition): ParsedValue; +} +export {}; diff --git a/dist/util.d.ts b/dist/util.d.ts new file mode 100644 index 0000000..ee15c1a --- /dev/null +++ b/dist/util.d.ts @@ -0,0 +1,3 @@ +export declare function assert(condition: any, message?: string): void; +export declare function hasOwn(own: object, prop: string): boolean; +export declare function quantile(ascArr: number[], p: number): number; diff --git a/package.json b/package.json index 579df94..f6a4ff0 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "Some simple data transforms for Apache ECharts 5", "license": "Apache-2.0", "main": "dist/ecSimpleTransform.js", + "types": "dist/index.d.ts", "jsdelivr": "dist/ecSimpleTransform.min.js", "repository": { "type": "git",