mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-23 12:56:46 +08:00
@types/gm Add GetterOptions for working with streams and identify operations (#18447)
* Add GetterOptions for working with streams and identify operations Identify operations need to buffer readStream in memory if you need to write()/stream() afterwards See: https://github.com/aheckmann/gm/blob/c6a6c5a/README.md#streams * Apply some tslint recommendations * Add tslint.json * Fix linting errors * Add tslint rule to skip unified-signatures check * Ensure geometry is passed ResizeOption
This commit is contained in:
committed by
Sheetal Nandi
parent
972aedb721
commit
1de0136f93
@@ -1,70 +1,68 @@
|
||||
import gm = require('gm');
|
||||
import stream = require('stream');
|
||||
|
||||
var src: string;
|
||||
var matrix: string;
|
||||
var enable: boolean;
|
||||
var ltr: boolean;
|
||||
var password: string;
|
||||
var bits: number;
|
||||
var intensity: number;
|
||||
var r: number;
|
||||
var g: number;
|
||||
var b: number;
|
||||
var opacity: number;
|
||||
var x: number;
|
||||
var y: number;
|
||||
var radius: number;
|
||||
var sigma: number;
|
||||
var width: number;
|
||||
var height: number;
|
||||
var color: string;
|
||||
var channel: string;
|
||||
var type: string;
|
||||
var factor: number;
|
||||
var numColors: number;
|
||||
var operator: string;
|
||||
var multiplier: number;
|
||||
var kernel: string;
|
||||
var usePercent: boolean;
|
||||
var time: number;
|
||||
var server: string;
|
||||
var method: string;
|
||||
var percent: number;
|
||||
var encoding: string;
|
||||
var options: string;
|
||||
var file: string;
|
||||
var distance: number;
|
||||
var geometry: string;
|
||||
var direction: string;
|
||||
var name: string;
|
||||
var offset: number;
|
||||
var blackPoint: number;
|
||||
var gamma: number;
|
||||
var whitePoint: number;
|
||||
var limit: string;
|
||||
var format: string;
|
||||
var iterations: number;
|
||||
var count: number;
|
||||
var b: number;
|
||||
var s: number;
|
||||
var h: number;
|
||||
var dest: string;
|
||||
var images: string[];
|
||||
var angle: number;
|
||||
var NxN: string;
|
||||
var size: number;
|
||||
var command: string;
|
||||
var index: number;
|
||||
var threshold: number;
|
||||
var attribute: string;
|
||||
var attrValue: string;
|
||||
var format: string;
|
||||
var font: string;
|
||||
var quality: number;
|
||||
var align: string;
|
||||
var depth: number;
|
||||
var readStream: stream.PassThrough;
|
||||
let src: string;
|
||||
let matrix: string;
|
||||
let enable: boolean;
|
||||
let ltr: boolean;
|
||||
let password: string;
|
||||
let bits: number;
|
||||
let intensity: number;
|
||||
let r: number;
|
||||
let g: number;
|
||||
let b: number;
|
||||
let opacity: number;
|
||||
let x: number;
|
||||
let y: number;
|
||||
let radius: number;
|
||||
let sigma: number;
|
||||
let width: number;
|
||||
let height: number;
|
||||
let color: string;
|
||||
let channel: gm.ChannelType;
|
||||
let type: string;
|
||||
let factor: number;
|
||||
let numColors: number;
|
||||
let operator: string;
|
||||
let multiplier: number;
|
||||
let kernel: string;
|
||||
let usePercent: boolean;
|
||||
let time: number;
|
||||
let server: string;
|
||||
let method: string;
|
||||
let percent: number;
|
||||
let encoding: string;
|
||||
let options: gm.ResizeOption;
|
||||
let file: string;
|
||||
let distance: number;
|
||||
let geometry: string;
|
||||
let direction: string;
|
||||
let name: string;
|
||||
let offset: number;
|
||||
let blackPoint: number;
|
||||
let gamma: number;
|
||||
let whitePoint: number;
|
||||
let limit: string;
|
||||
let format: string;
|
||||
let iterations: number;
|
||||
let count: number;
|
||||
let s: number;
|
||||
let h: number;
|
||||
let dest: string;
|
||||
let images: string[];
|
||||
let angle: number;
|
||||
let NxN: string;
|
||||
let size: number;
|
||||
let command: string;
|
||||
let index: number;
|
||||
let threshold: number;
|
||||
let attribute: string;
|
||||
let attrValue: string;
|
||||
let font: string;
|
||||
let quality: number;
|
||||
let align: string;
|
||||
let depth: number;
|
||||
let readStream: stream.PassThrough;
|
||||
|
||||
gm(src)
|
||||
.adjoin()
|
||||
@@ -288,20 +286,36 @@ gm(src)
|
||||
.windowGroup()
|
||||
.color((err, color) => {
|
||||
})
|
||||
.color({ bufferStream: true }, (err, color) => {
|
||||
})
|
||||
.depth((err, bitdepth) => {
|
||||
})
|
||||
.depth({ bufferStream: true }, (err, bitdepth) => {
|
||||
})
|
||||
.filesize((err, size) => {
|
||||
})
|
||||
.filesize({ bufferStream: true }, (err, size) => {
|
||||
})
|
||||
.format((err, format) => {
|
||||
})
|
||||
.format({ bufferStream: true }, (err, format) => {
|
||||
})
|
||||
.identify((err, info) => {
|
||||
})
|
||||
.identify({ bufferStream: true }, (err, info) => {
|
||||
})
|
||||
.res((err, resolution) => {
|
||||
})
|
||||
.res({ bufferStream: true }, (err, resolution) => {
|
||||
})
|
||||
.size((err, size) => {
|
||||
})
|
||||
.size({ bufferStream: true }, (err, size) => {
|
||||
})
|
||||
.orientation((err, orient) => {
|
||||
})
|
||||
.orientation({ bufferStream: true }, (err, orient) => {
|
||||
})
|
||||
.draw(options)
|
||||
.drawArc(x, y, x, y, radius, radius)
|
||||
.drawBezier(x, y, x, y)
|
||||
@@ -342,17 +356,16 @@ gm(src).toBuffer((err, buffer) => {
|
||||
gm(src).toBuffer(format, (err, buffer) => {
|
||||
});
|
||||
|
||||
var imageMagick = gm.subClass({ imageMagick: true });
|
||||
var readStream = imageMagick(src)
|
||||
let imageMagick = gm.subClass({ imageMagick: true });
|
||||
readStream = imageMagick(src)
|
||||
.adjoin()
|
||||
.stream();
|
||||
|
||||
var passStream = imageMagick(readStream).stream();
|
||||
let passStream = imageMagick(readStream).stream();
|
||||
|
||||
var buffers: Buffer[] = [];
|
||||
var buffer: Buffer;
|
||||
let buffers: Buffer[] = [];
|
||||
let buffer: Buffer;
|
||||
passStream.on('data', (chunk) => buffers.push(chunk as Buffer)).on('close', () => {
|
||||
buffer = Buffer.concat(buffers);
|
||||
var readstream = imageMagick(buffer).stream();
|
||||
})
|
||||
|
||||
let readstream = imageMagick(buffer).stream();
|
||||
});
|
||||
|
||||
116
types/gm/index.d.ts
vendored
116
types/gm/index.d.ts
vendored
@@ -1,11 +1,10 @@
|
||||
// Type definitions for gm 1.17.0
|
||||
// Type definitions for gm 1.17
|
||||
// Project: https://github.com/aheckmann/gm
|
||||
// Definitions by: Joel Spadin <https://github.com/ChaosinaCan>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference types="node"/>
|
||||
|
||||
|
||||
import stream = require('stream');
|
||||
|
||||
declare function m(image: string): m.State;
|
||||
@@ -14,49 +13,41 @@ declare function m(buffer: Buffer, image?: string): m.State;
|
||||
declare function m(width: number, height: number, color?: string): m.State;
|
||||
|
||||
declare namespace m {
|
||||
export interface ClassOptions {
|
||||
interface ClassOptions {
|
||||
imageMagick?: boolean;
|
||||
nativeAutoOrient?: boolean;
|
||||
}
|
||||
|
||||
export interface CompareCallback {
|
||||
(err: Error, isEqual: boolean, equality: number, raw: number): any;
|
||||
}
|
||||
|
||||
export interface GetterCallback<T> {
|
||||
(err: Error, value: T): any;
|
||||
}
|
||||
|
||||
export interface WriteCallback {
|
||||
(err: Error, stdout: string, stderr: string, cmd: string): any;
|
||||
}
|
||||
|
||||
export interface ChannelInfo<T> {
|
||||
interface ChannelInfo<T> {
|
||||
Red: T;
|
||||
Green: T;
|
||||
Blue: T;
|
||||
}
|
||||
|
||||
export interface CompareOptions {
|
||||
interface CompareOptions {
|
||||
file?: string;
|
||||
highlightColor?: string;
|
||||
highlightStyle?: string;
|
||||
tolerance?: number;
|
||||
}
|
||||
|
||||
export interface ColorStatistics {
|
||||
interface ColorStatistics {
|
||||
Minimum: string;
|
||||
Maximum: string;
|
||||
Mean: string;
|
||||
'Standard Deviation': string;
|
||||
}
|
||||
|
||||
export interface Dimensions {
|
||||
interface Dimensions {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
export interface ImageInfo {
|
||||
interface GetterOptions {
|
||||
bufferStream?: boolean;
|
||||
}
|
||||
|
||||
interface ImageInfo {
|
||||
'Background Color': string;
|
||||
'Border Color': string;
|
||||
'Channel Depths': ChannelInfo<string>;
|
||||
@@ -99,7 +90,7 @@ declare namespace m {
|
||||
Type: string;
|
||||
}
|
||||
|
||||
export interface State {
|
||||
interface State {
|
||||
// Image Operations
|
||||
adjoin(): State;
|
||||
affine(matrix: string): State;
|
||||
@@ -255,19 +246,7 @@ declare namespace m {
|
||||
fuzz(distance: number, percent?: boolean): State;
|
||||
gamma(r: number, g: number, b: number): State;
|
||||
gaussian(radius: number, sigma?: number): State;
|
||||
/** Width and height are specified in percents */
|
||||
geometry(width: number, height: number, option: '%'): State;
|
||||
/** Specify maximum area in pixels */
|
||||
geometry(width: number, height: number, option: '@'): State;
|
||||
/** Ignore aspect ratio */
|
||||
geometry(width: number, height: number, option: '!'): State;
|
||||
/** Width and height are minimum values */
|
||||
geometry(width: number, height: number, option: '^'): State;
|
||||
/** Change dimensions only if image is smaller than width or height */
|
||||
geometry(width: number, height: number, option: '<'): State;
|
||||
/** Change dimensions only if image is larger than width or height */
|
||||
geometry(width: number, height: number, option: '>'): State;
|
||||
geometry(width: number, height?: number, option?: string): State;
|
||||
geometry(width: number, height?: number, option?: ResizeOption): State;
|
||||
geometry(geometry: string): State;
|
||||
greenPrimary(x: number, y: number): State;
|
||||
gravity(direction: 'NorthWest'): State;
|
||||
@@ -437,17 +416,7 @@ declare namespace m {
|
||||
process(command: string): State;
|
||||
profile(filename: string): State;
|
||||
progress(): State;
|
||||
randomThreshold(channelType: 'All', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Intensity', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Red', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Green', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Blue', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Cyan', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Magenta', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Yellow', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Black', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: 'Opacity', LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: string, LOWxHIGH: string): State;
|
||||
randomThreshold(channelType: ChannelType, LOWxHIGH: string): State;
|
||||
quality(level: number): State;
|
||||
raise(width: number, height: number): State;
|
||||
recolor(matrix: string): State;
|
||||
@@ -462,19 +431,8 @@ declare namespace m {
|
||||
samplingFactor(horizontalFactor: number, verticalFactor: number): State;
|
||||
rawSize(width: number, height: number, offset?: number): State;
|
||||
resample(horizontal: number, vertical: number): State;
|
||||
/** Width and height are specified in percents */
|
||||
resize(width: number, height: number, option: '%'): State;
|
||||
/** Specify maximum area in pixels */
|
||||
resize(width: number, height: number, option: '@'): State;
|
||||
/** Ignore aspect ratio */
|
||||
resize(width: number, height: number, option: '!'): State;
|
||||
/** Width and height are minimum values */
|
||||
resize(width: number, height: number, option: '^'): State;
|
||||
/** Change dimensions only if image is smaller than width or height */
|
||||
resize(width: number, height: number, option: '<'): State;
|
||||
/** Change dimensions only if image is larger than width or height */
|
||||
resize(width: number, height: number, option: '>'): State;
|
||||
resize(width: number, height?: number, option?: string): State;
|
||||
resize(width: number, height: number, option: ResizeOption): State;
|
||||
resize(width: number, height?: number, option?: ResizeOption): State;
|
||||
roll(horizontal: number, vertical: number): State;
|
||||
rotate(backgroundColor: string, degrees: number): State;
|
||||
scene(index: number): State;
|
||||
@@ -553,13 +511,21 @@ declare namespace m {
|
||||
|
||||
// Getters
|
||||
color(callback: GetterCallback<number>): State;
|
||||
color(opts: GetterOptions, callback: GetterCallback<number>): State;
|
||||
depth(callback: GetterCallback<number>): State;
|
||||
depth(opts: GetterOptions, callback: GetterCallback<number>): State;
|
||||
filesize(callback: GetterCallback<string>): State;
|
||||
filesize(opts: GetterOptions, callback: GetterCallback<string>): State;
|
||||
format(callback: GetterCallback<string>): State;
|
||||
format(opts: GetterOptions, callback: GetterCallback<string>): State;
|
||||
identify(callback: GetterCallback<ImageInfo>): State;
|
||||
identify(opts: GetterOptions, callback: GetterCallback<ImageInfo>): State;
|
||||
res(callback: GetterCallback<string>): State;
|
||||
res(opts: GetterOptions, callback: GetterCallback<string>): State;
|
||||
size(callback: GetterCallback<Dimensions>): State;
|
||||
size(opts: GetterOptions, callback: GetterCallback<Dimensions>): State;
|
||||
orientation(callback: GetterCallback<string>): State;
|
||||
orientation(opts: GetterOptions, callback: GetterCallback<string>): State;
|
||||
|
||||
// Drawing Operations
|
||||
draw(args: string): State;
|
||||
@@ -613,18 +579,42 @@ declare namespace m {
|
||||
write(filename: string, callback: WriteCallback): void;
|
||||
}
|
||||
|
||||
export interface SubClass {
|
||||
interface SubClass {
|
||||
(image: string): State;
|
||||
(stream: NodeJS.ReadableStream, image?: string): State;
|
||||
(buffer: Buffer, image?: string): State;
|
||||
(width: number, height: number, color?: string): State;
|
||||
}
|
||||
|
||||
export function compare(filename1: string, filename2: string, callback: CompareCallback): void;
|
||||
export function compare(filename1: string, filename2: string, tolerance: number, callback: CompareCallback): void;
|
||||
export function compare(filename1: string, filename2: string, options: CompareOptions, callback: CompareCallback): void;
|
||||
function compare(filename1: string, filename2: string, callback: CompareCallback): void;
|
||||
function compare(filename1: string, filename2: string, tolerance: number, callback: CompareCallback): void;
|
||||
function compare(filename1: string, filename2: string, options: CompareOptions, callback: CompareCallback): void;
|
||||
|
||||
export function subClass(options: ClassOptions): SubClass;
|
||||
function subClass(options: ClassOptions): SubClass;
|
||||
|
||||
type ChannelType = 'All'
|
||||
| 'Intensity'
|
||||
| 'Red'
|
||||
| 'Green'
|
||||
| 'Blue'
|
||||
| 'Cyan'
|
||||
| 'Magenta'
|
||||
| 'Yellow'
|
||||
| 'Black'
|
||||
| 'Opacity';
|
||||
|
||||
type CompareCallback = (err: Error, isEqual: boolean, equality: number, raw: number) => any;
|
||||
|
||||
type GetterCallback<T> = (err: Error, value: T) => any;
|
||||
|
||||
type ResizeOption = '%' /** Width and height are specified in percents */
|
||||
| '@' /** Specify maximum area in pixels */
|
||||
| '!' /** Ignore aspect ratio */
|
||||
| '^' /** Width and height are minimum values */
|
||||
| '<' /** Change dimensions only if image is smaller than width or height */
|
||||
| '>'; /** Change dimensions only if image is larger than width or height */
|
||||
|
||||
type WriteCallback = (err: Error, stdout: string, stderr: string, cmd: string) => any;
|
||||
}
|
||||
|
||||
export = m;
|
||||
|
||||
7
types/gm/tslint.json
Normal file
7
types/gm/tslint.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"extends": "dtslint/dt.json",
|
||||
"rules": {
|
||||
// This package unifiable overloaded functions, lot of effort to fix
|
||||
"unified-signatures": false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user