From 757a489c02f6954b21808e12344aea4df7150433 Mon Sep 17 00:00:00 2001 From: Jeff Schiller Date: Fri, 22 Dec 2023 14:19:40 -0800 Subject: [PATCH] Update TS types for GifParser and related types. --- index.js | 3 + types/image/parsers/gif.d.ts | 237 +++++++++++++++++++++++++++++++ types/image/parsers/gif.d.ts.map | 1 + types/index.d.ts | 1 + 4 files changed, 242 insertions(+) create mode 100644 types/image/parsers/gif.d.ts create mode 100644 types/image/parsers/gif.d.ts.map diff --git a/index.js b/index.js index 2bd7954..3ce5633 100644 --- a/index.js +++ b/index.js @@ -23,6 +23,9 @@ export { } from './archive/decompress.js'; export { getFullMIMEString, getShortMIMEString } from './codecs/codecs.js'; export { findMimeType } from './file/sniffer.js'; +export { GifApplicationExtensionEvent, GifCommentExtensionEvent, GifGraphicControlExtensionEvent, + GifHeaderParseEvent, GifLogicalScreenParseEvent, GifParseEventType, GifParser, + GifPlainTextExtensionEvent, GifTableBasedImageEvent } from './image/parsers/gif.js'; export { convertWebPtoPNG, convertWebPtoJPG } from './image/webp-shim/webp-shim.js'; export { BitBuffer } from './io/bitbuffer.js'; export { BitStream } from './io/bitstream.js'; diff --git a/types/image/parsers/gif.d.ts b/types/image/parsers/gif.d.ts new file mode 100644 index 0000000..e6b1a8e --- /dev/null +++ b/types/image/parsers/gif.d.ts @@ -0,0 +1,237 @@ +export namespace GifParseEventType { + const APPLICATION_EXTENSION: string; + const COMMENT_EXTENSION: string; + const GRAPHIC_CONTROL_EXTENSION: string; + const HEADER: string; + const LOGICAL_SCREEN: string; + const PLAIN_TEXT_EXTENSION: string; + const TABLE_BASED_IMAGE: string; + const TRAILER: string; +} +/** + * @typedef GifHeader + * @property {string} version + */ +export class GifHeaderParseEvent extends Event { + /** @param {GifHeader} header */ + constructor(header: GifHeader); + /** @type {GifHeader} */ + header: GifHeader; +} +/** + * @typedef GifColor + * @property {number} red + * @property {number} green + * @property {number} blue + */ +/** + * @typedef GifLogicalScreen + * @property {number} logicalScreenWidth + * @property {number} logicalScreenHeight + * @property {boolean} globalColorTableFlag + * @property {number} colorResolution + * @property {boolean} sortFlag + * @property {number} globalColorTableSize + * @property {number} backgroundColorIndex + * @property {number} pixelAspectRatio + * @property {GifColor[]=} globalColorTable Only if globalColorTableFlag is true. + */ +export class GifLogicalScreenParseEvent extends Event { + /** @param {GifLogicalScreen} */ + constructor(logicalScreen: any); + /** @type {GifLogicalScreen} */ + logicalScreen: GifLogicalScreen; +} +/** + * @typedef GifTableBasedImage + * @property {number} imageLeftPosition + * @property {number} imageTopPosition + * @property {number} imageWidth + * @property {number} imageHeight + * @property {boolean} localColorTableFlag + * @property {boolean} interlaceFlag + * @property {boolean} sortFlag + * @property {number} localColorTableSize + * @property {GifColor[]=} localColorTable Only if localColorTableFlag is true. + * @property {number} lzwMinimumCodeSize + * @property {Uint8Array} imageData + */ +export class GifTableBasedImageEvent extends Event { + /** @param {GifTableBasedImage} img */ + constructor(img: GifTableBasedImage); + /** @type {GifTableBasedImage} */ + tableBasedImage: GifTableBasedImage; +} +/** + * @typedef GifGraphicControlExtension + * @property {number} disposalMethod + * @property {boolean} userInputFlag + * @property {boolean} transparentColorFlag + * @property {number} delayTime + * @property {number} transparentColorIndex + */ +export class GifGraphicControlExtensionEvent extends Event { + /** @param {GifGraphicControlExtension} ext */ + constructor(ext: GifGraphicControlExtension); + /** @type {GifGraphicControlExtension} */ + graphicControlExtension: GifGraphicControlExtension; +} +/** + * @typedef GifCommentExtension + * @property {string} comment + */ +export class GifCommentExtensionEvent extends Event { + /** @param {string} comment */ + constructor(comment: string); + /** @type {string} */ + comment: string; +} +/** + * @typedef GifPlainTextExtension + * @property {number} textGridLeftPosition + * @property {number} textGridTopPosition + * @property {number} textGridWidth + * @property {number} textGridHeight + * @property {number} characterCellWidth + * @property {number} characterCellHeight + * @property {number} textForegroundColorIndex + * @property {number} textBackgroundColorIndex + * @property {string} plainText + */ +export class GifPlainTextExtensionEvent extends Event { + /** @param {GifPlainTextExtension} ext */ + constructor(ext: GifPlainTextExtension); + /** @type {GifPlainTextExtension} */ + plainTextExtension: GifPlainTextExtension; +} +/** + * @typedef GifApplicationExtension + * @property {string} applicationIdentifier + * @property {Uint8Array} applicationAuthenticationCode + * @property {Uint8Array} applicationData + */ +export class GifApplicationExtensionEvent extends Event { + /** @param {GifApplicationExtension} ext */ + constructor(ext: GifApplicationExtension); + /** @type {GifApplicationExtension} */ + applicationExtension: GifApplicationExtension; +} +export class GifTrailerEvent extends Event { + constructor(); +} +/** + * The Grammar. + * + * ::= Header * Trailer + * ::= Logical Screen Descriptor [Global Color Table] + * ::= | + * + * ::= [Graphic Control Extension] + * ::= | + * Plain Text Extension + * ::= Image Descriptor [Local Color Table] Image Data + * ::= Application Extension | + * Comment Extension + */ +export class GifParser extends EventTarget { + /** + * @param {ArrayBuffer} ab + */ + constructor(ab: ArrayBuffer); + /** + * @type {ByteStream} + * @private + */ + private bstream; + /** + * @type {string} + * @private + */ + private version; + /** + * Overridden so that the type hints for eventType are specific. + * @param {'application_extension'|'comment_extension'|'graphical_control_extension'|'header'|'logical_screen'|'plain_text_extension'|'table_based_image'|'trailer'} eventType + * @param {EventListenerOrEventListenerObject} listener + * @override + */ + override addEventListener(eventType: 'application_extension' | 'comment_extension' | 'graphical_control_extension' | 'header' | 'logical_screen' | 'plain_text_extension' | 'table_based_image' | 'trailer', listener: EventListenerOrEventListenerObject): void; + /** + * @returns {Promise} A Promise that resolves when the parsing is complete. + */ + start(): Promise; + /** + * @private + * @returns {boolean} True if this was not the last block. + */ + private readGraphicBlock; + /** + * @private + * @returns {Uint8Array} Data from the sub-block, or null if this was the last, zero-length block. + */ + private readSubBlock; +} +export type GifHeader = { + version: string; +}; +export type GifColor = { + red: number; + green: number; + blue: number; +}; +export type GifLogicalScreen = { + logicalScreenWidth: number; + logicalScreenHeight: number; + globalColorTableFlag: boolean; + colorResolution: number; + sortFlag: boolean; + globalColorTableSize: number; + backgroundColorIndex: number; + pixelAspectRatio: number; + /** + * Only if globalColorTableFlag is true. + */ + globalColorTable?: GifColor[] | undefined; +}; +export type GifTableBasedImage = { + imageLeftPosition: number; + imageTopPosition: number; + imageWidth: number; + imageHeight: number; + localColorTableFlag: boolean; + interlaceFlag: boolean; + sortFlag: boolean; + localColorTableSize: number; + /** + * Only if localColorTableFlag is true. + */ + localColorTable?: GifColor[] | undefined; + lzwMinimumCodeSize: number; + imageData: Uint8Array; +}; +export type GifGraphicControlExtension = { + disposalMethod: number; + userInputFlag: boolean; + transparentColorFlag: boolean; + delayTime: number; + transparentColorIndex: number; +}; +export type GifCommentExtension = { + comment: string; +}; +export type GifPlainTextExtension = { + textGridLeftPosition: number; + textGridTopPosition: number; + textGridWidth: number; + textGridHeight: number; + characterCellWidth: number; + characterCellHeight: number; + textForegroundColorIndex: number; + textBackgroundColorIndex: number; + plainText: string; +}; +export type GifApplicationExtension = { + applicationIdentifier: string; + applicationAuthenticationCode: Uint8Array; + applicationData: Uint8Array; +}; +//# sourceMappingURL=gif.d.ts.map \ No newline at end of file diff --git a/types/image/parsers/gif.d.ts.map b/types/image/parsers/gif.d.ts.map new file mode 100644 index 0000000..05e3e5a --- /dev/null +++ b/types/image/parsers/gif.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"gif.d.ts","sourceRoot":"","sources":["../../../image/parsers/gif.js"],"names":[],"mappings":";;;;;;;;;;AA0BA;;;GAGG;AAEH;IACE,gCAAgC;IAChC,oBADY,SAAS,EAKpB;IAFC,wBAAwB;IACxB,QADW,SAAS,CACA;CAEvB;AAED;;;;;GAKG;AAEH;;;;;;;;;;;GAWG;AAEH;IACE,gCAAgC;IAChC,gCAIC;IAFC,+BAA+B;IAC/B,eADW,gBAAgB,CACO;CAErC;AAED;;;;;;;;;;;;;GAaG;AAEH;IACE,sCAAsC;IACtC,iBADY,kBAAkB,EAK7B;IAFC,iCAAiC;IACjC,iBADW,kBAAkB,CACH;CAE7B;AAED;;;;;;;GAOG;AAEH;IACE,8CAA8C;IAC9C,iBADY,0BAA0B,EAKrC;IAFC,yCAAyC;IACzC,yBADW,0BAA0B,CACH;CAErC;AAED;;;GAGG;AAEH;IACE,8BAA8B;IAC9B,qBADY,MAAM,EAKjB;IAFC,qBAAqB;IACrB,SADW,MAAM,CACK;CAEzB;AAED;;;;;;;;;;;GAWG;AAEH;IACE,yCAAyC;IACzC,iBADY,qBAAqB,EAKhC;IAFC,oCAAoC;IACpC,oBADW,qBAAqB,CACH;CAEhC;AAED;;;;;GAKG;AAEH;IACE,2CAA2C;IAC3C,iBADY,uBAAuB,EAKlC;IAFC,sCAAsC;IACtC,sBADW,uBAAuB,CACH;CAElC;AAED;IACE,cAEC;CACF;AAED;;;;;;;;;;;;;GAaG;AAEH;IAaE;;OAEG;IACH,gBAFW,WAAW,EAKrB;IAlBD;;;OAGG;IACH,gBAAQ;IAER;;;OAGG;IACH,gBAAQ;IAUR;;;;;OAKG;IACH,qCAJW,uBAAuB,GAAC,mBAAmB,GAAC,6BAA6B,GAAC,QAAQ,GAAC,gBAAgB,GAAC,sBAAsB,GAAC,mBAAmB,GAAC,SAAS,YACxJ,kCAAkC,QAK5C;IAED;;OAEG;IACH,SAFa,QAAQ,IAAI,CAAC,CAwDzB;IAED;;;OAGG;IACH,yBAoMC;IAED;;;OAGG;IACH,qBAIC;CACF;;aAzca,MAAM;;;SAcN,MAAM;WACN,MAAM;UACN,MAAM;;;wBAKN,MAAM;yBACN,MAAM;0BACN,OAAO;qBACP,MAAM;cACN,OAAO;0BACP,MAAM;0BACN,MAAM;sBACN,MAAM;;;;uBACN,QAAQ,EAAE;;;uBAcV,MAAM;sBACN,MAAM;gBACN,MAAM;iBACN,MAAM;yBACN,OAAO;mBACP,OAAO;cACP,OAAO;yBACP,MAAM;;;;sBACN,QAAQ,EAAE;wBACV,MAAM;eACN,UAAU;;;oBAcV,MAAM;mBACN,OAAO;0BACP,OAAO;eACP,MAAM;2BACN,MAAM;;;aAcN,MAAM;;;0BAcN,MAAM;yBACN,MAAM;mBACN,MAAM;oBACN,MAAM;wBACN,MAAM;yBACN,MAAM;8BACN,MAAM;8BACN,MAAM;eACN,MAAM;;;2BAcN,MAAM;mCACN,UAAU;qBACV,UAAU"} \ No newline at end of file diff --git a/types/index.d.ts b/types/index.d.ts index 34fc719..3313ec3 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -8,5 +8,6 @@ export type ProbeFormat = import('./codecs/codecs.js').ProbeFormat; export type ProbeInfo = import('./codecs/codecs.js').ProbeInfo; export { UnarchiveEvent, UnarchiveEventType, UnarchiveInfoEvent, UnarchiveErrorEvent, UnarchiveStartEvent, UnarchiveFinishEvent, UnarchiveProgressEvent, UnarchiveExtractEvent, Unarchiver, Unzipper, Unrarrer, Untarrer, getUnarchiver } from "./archive/decompress.js"; export { getFullMIMEString, getShortMIMEString } from "./codecs/codecs.js"; +export { GifApplicationExtensionEvent, GifCommentExtensionEvent, GifGraphicControlExtensionEvent, GifHeaderParseEvent, GifLogicalScreenParseEvent, GifParseEventType, GifParser, GifPlainTextExtensionEvent, GifTableBasedImageEvent } from "./image/parsers/gif.js"; export { convertWebPtoPNG, convertWebPtoJPG } from "./image/webp-shim/webp-shim.js"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file