Vigia

Nâng cấp skia-canvas từ 3.x lên 4.x

So sánh API công khai của skia-canvas 3.0.8 và 4.0.0, được tính tự động từ kiểu TypeScript. Chữ ký thay đổi là thay đổi có thể không tương thích, không phải điều chắc chắn.

Tóm tắt

Đường dẫn import bị xóa0
Export bị xóa0
Chữ ký thay đổi13
Thành viên lớp hoặc interface bị xóa2
Thành viên lớp hoặc interface thay đổi44
Mới bị ngừng hỗ trợ1
Thay đổi yêu cầu (engines, phụ thuộc peer)0
Export mới30

Export bị xóa

Không phát hiện.

Chữ ký thay đổi

exportTrướcSau
skia-canvas · Matrixstring | DOMMatrix | { a: number; b: number; c: number; d: number; e: number; f: number; } | FixedLenArray<number, 6> | FixedLenArray<number, 16>DOMMatrix | TransformString | { a: number; b: number; c: number; d: number; e: number; f: number; } | FixedLenArray<number, 6> | FixedLenArray<number, 16>
skia-canvas · loadImage(src: string | URL, options?: RequestInit | undefined): Promise<Image> | (src: any): Promise<Image>(src: string | URL, options?: any): Promise<Image> | (src: any, options?: any): Promise<Image>
skia-canvas · ColorSpace"srgb""srgb" | "display-p3"
skia-canvas · CursorStyle"copy" | "move" | "none" | "default" | "crosshair" | "hand" | "arrow" | "text" | "wait" | "help" | "progress" | "not-allowed" | "context-menu" | "cell" | "vertical-text" | "alias" | "no-drop" | "grab" | "grabbing" | "all-scroll" | "zoom-in" | "zoom-out" | "e-resize" | "n-resize" | "ne-resize" | "nw-resize" | "s-resize" | "se-resize" | "sw-resize" | "w-resize" | "ew-resize" | "ns-resize" | "nesw-resize" | "nwse-resize" | "col-resize" | "row-resize""none" | "copy" | "move" | "default" | "crosshair" | "pointer" | "text" | "wait" | "help" | "progress" | "not-allowed" | "context-menu" | "cell" | "vertical-text" | "alias" | "no-drop" | "grab" | "grabbing" | "all-scroll" | "zoom-in" | "zoom-out" | "e-resize" | "n-resize" | "ne-resize" | "nw-resize" | "s-resize" | "se-resize" | "sw-resize" | "w-resize" | "ew-resize" | "ns-resize" | "nesw-resize" | "nwse-resize" | "col-resize" | "row-resize"
skia-canvas · ExportFormat"png" | "jpg" | "jpeg" | "webp" | "raw" | "pdf" | "svg""png" | "jpg" | "jpeg" | "webp" | "raw" | "pdf" | "svg" | "image/png" | "image/jpeg" | "image/webp" | "application/pdf" | "image/svg+xml" | "application/octet-stream"
skia-canvas · WindowEvents{ mousedown: MouseEventProps; mouseup: MouseEventProps; mousemove: MouseEventProps; keydown: KeyboardEventProps; keyup: KeyboardEventProps; input: { data: string; inputType: TextInputType; }; wheel: { deltaX: number; deltaY: number; }; fullscreen: { enabled: boolean; }; move: { left: number; top: number; }; resize: { height: number; width: number; }; frame: { frame: number; }; draw: { frame: number; }; blur: {}; focus: {}; setup: {}; close: {}; }{ mousedown: MouseEventProps; mouseup: MouseEventProps; mousemove: MouseEventProps; mouseenter: MouseEventProps; mouseleave: MouseEventProps; pointerdown: CoalescedPointerEventProps; pointerup: CoalescedPointerEventProps; pointermove: CoalescedPointerEventProps; pointerover: PointerEventProps; pointerenter: PointerEventProps; pointerout: PointerEventProps; pointerleave: PointerEventProps; pointercancel: PointerEventProps; keydown: KeyboardEventProps; keyup: KeyboardEventProps; input: { data: string; inputType: TextInputType; }; compositionstart: CompositionEventProps; compositionupdate: Compos…
skia-canvas · WindowOptions{ title?: string | undefined; left?: number | undefined; top?: number | undefined; width?: number | undefined; height?: number | undefined; fit?: FitStyle | undefined; page?: number | undefined; background?: string | undefined; fullscreen?: boolean | undefined; borderless?: boolean | undefined; resizable?: boolean | undefined; visible?: boolean | undefined; cursor?: CursorStyle | undefined; canvas?: Canvas | undefined; } & TextOptions{ title?: string | undefined; left?: number | undefined; top?: number | undefined; width?: number | undefined; height?: number | undefined; fit?: FitStyle | undefined; page?: number | undefined; background?: CSSColor | undefined; fullscreen?: boolean | undefined; borderless?: boolean | undefined; resizable?: boolean | undefined; visible?: boolean | undefined; cursor?: CursorStyle | undefined; canvas?: Canvas | undefined; } & TextOptions
skia-canvas · loadImageData(src: any, width: number, height?: number | undefined): Promise<ImageData> | (src: any, width: number, height: number, settings?: (ImageDataSettings & RequestInit) | undefined): Promise<ImageData> | (src: Sharp): Promise<ImageData>(src: any, width: number, height?: number | undefined): Promise<ImageData> | (src: any, width: number, height: number, settings?: any): Promise<ImageData> | (src: Sharp): Promise<ImageData>
skia-canvas · CanvasDrawableImage | ImageData | CanvasImage | ImageData | Canvas | CanvasRenderingContext2D
skia-canvas · FontVariantSetting"normal" | "historical-forms" | "small-caps" | "all-small-caps" | "petite-caps" | "all-petite-caps" | "unicase" | "titling-caps" | "lining-nums" | "oldstyle-nums" | "proportional-nums" | "tabular-nums" | "diagonal-fractions" | "stacked-fractions" | "ordinal" | "slashed-zero" | "common-ligatures" | "no-common-ligatures" | "discretionary-ligatures" | "no-discretionary-ligatures" | "historical-ligatures" | "no-historical-ligatures" | "contextual" | "no-contextual" | "jis78" | "jis83" | "jis90" | "jis04" | "simplified" | "traditional" | "full-width" | "proportional-width" | "ruby" | "super" | "sub…(string & {}) | FontVariantKeyword | FontVariantAlternate
skia-canvas · KeyboardEventProps{ key: string; code: string; location: number; repeat: boolean; ctrlKey: boolean; altKey: boolean; metaKey: boolean; shiftKey: boolean; }{ key: string; code: string; location: number; repeat: boolean; ctrlKey: boolean; altKey: boolean; metaKey: boolean; shiftKey: boolean; preventDefault(): void; }
skia-canvas · CanvasPatternSourceImage | CanvasImage | ImageData | Canvas | CanvasRenderingContext2D
skia-canvas · GlobalCompositeOperation"color" | "color-burn" | "color-dodge" | "copy" | "darken" | "destination-atop" | "destination-in" | "destination-out" | "destination-over" | "difference" | "exclusion" | "hard-light" | "hue" | "lighten" | "lighter" | "luminosity" | "multiply" | "overlay" | "saturation" | "screen" | "soft-light" | "source-atop" | "source-in" | "source-out" | "source-over" | "xor""clear" | "color" | "color-burn" | "color-dodge" | "copy" | "darken" | "destination" | "destination-atop" | "destination-in" | "destination-out" | "destination-over" | "difference" | "exclusion" | "hard-light" | "hue" | "lighten" | "lighter" | "luminosity" | "multiply" | "overlay" | "saturation" | "screen" | "soft-light" | "source-atop" | "source-in" | "source-out" | "source-over" | "xor"

Thành viên lớp hoặc interface bị xóa

memberimportTrước
Canvas.toSharpSyncskia-canvas(options?: RenderOptions | undefined): Sharp
Canvas.static contextsskia-canvasWeakMap<Canvas, readonly CanvasRenderingContext2D[]>

Thành viên lớp hoặc interface thay đổi

memberTrướcSau
App.eventLoopEventLoopModeundefined
Canvas.toURL(format: ExportFormat, options?: ExportOptions | undefined): Promise<string>(format?: ExportFormat | undefined, options?: ExportOptions | undefined): Promise<string>
Canvas.saveAs(filename: string, options?: SaveOptions | undefined): Promise<void>(filename: string | URL, options?: SaveOptions | undefined): Promise<void>
Canvas.toFile(filename: string, options?: SaveOptions | undefined): Promise<void>(filename: string | URL, options?: SaveOptions | undefined): Promise<void>
Canvas.newPage(width?: number | undefined, height?: number | undefined): CanvasRenderingContext2D(settings?: CanvasRenderingContext2DSettings | undefined): CanvasRenderingContext2D | (width?: number | undefined, height?: number | undefined, settings?: CanvasRenderingContext2DSettings | undefined): CanvasRenderingContext2D
Canvas.toBuffer(format: ExportFormat, options?: ExportOptions | undefined): Promise<Buffer>(format?: ExportFormat | undefined, options?: ExportOptions | undefined): Promise<Buffer>
Canvas.toDataURL(format: ExportFormat, quality?: number | undefined): string(format?: ExportFormat | undefined, quality?: number | undefined): string
Canvas.toURLSync(format: ExportFormat, options?: ExportOptions | undefined): string(format?: ExportFormat | undefined, options?: ExportOptions | undefined): string
Canvas.getContext(type?: "2d" | undefined): CanvasRenderingContext2D(type: "2d", settings?: CanvasRenderingContext2DSettings | undefined): CanvasRenderingContext2D | (type?: string | undefined, settings?: CanvasRenderingContext2DSettings | undefined): CanvasRenderingContext2D | null
Canvas.saveAsSync(filename: string, options?: SaveOptions | undefined): void(filename: string | URL, options?: SaveOptions | undefined): void
Canvas.constructor(width?: number | undefined, height?: number | undefined, options?: TextOptions | undefined): Canvas(width?: number | undefined, height?: number | undefined, options?: (TextOptions & CanvasBackend) | undefined): Canvas
Canvas.toBufferSync(format: ExportFormat, options?: ExportOptions | undefined): Buffer(format?: ExportFormat | undefined, options?: ExportOptions | undefined): Buffer
Canvas.toDataURLSync(format: ExportFormat, options?: ExportOptions | undefined): string(format?: ExportFormat | undefined, options?: ExportOptions | undefined): string
Path2D.points(step?: number | undefined): readonly [x: number, y: number][](step?: number | undefined, mode?: "even" | "exact" | undefined): readonly [x: number, y: number][]
Window.backgroundstringCSSColor
DOMMatrix.setMatrixValue(transformList: string): DOMMatrix(transformList: TransformString): DOMMatrix
ImageData.dataUint8ClampedArray<ArrayBufferLike>any
ImageData.colorSpace"srgb"ColorSpace
SaveOptions.mattestring | undefinedCSSColor | undefined
CanvasFilters.filterstring(string & {}) | "none" | FilterFunction
EngineDetails.api"Vulkan" | "Metal""Vulkan" | "Metal" | null
EngineDetails.errorstring | undefinedstring | null | undefined
ExportOptions.mattestring | undefinedCSSColor | undefined
RenderOptions.mattestring | undefinedCSSColor | undefined
CanvasGradient.addColorStop(offset: number, color: string): void(offset: number, color: CSSColor): void
CanvasDrawImage.drawCanvas(image: Canvas, dx: number, dy: number): void | (image: Canvas, dx: number, dy: number, dw: number, dh: number): void | (image: Canvas, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void(image: CanvasDrawable, dx: number, dy: number): void | (image: CanvasDrawable, dx: number, dy: number, dw: number, dh: number): void | (image: CanvasDrawable, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void
ImageDataSettings.colorSpace"srgb" | undefinedColorSpace | undefined
CanvasShadowStyles.shadowColorstringCSSColor
CreateTextureOptions.colorstring | undefinedCSSColor | undefined
CanvasFillStrokeStyles.fillStylestring | CanvasPattern | CanvasGradient | CanvasTextureCSSColor | CanvasPattern | CanvasGradient | CanvasTexture
CanvasFillStrokeStyles.strokeStylestring | CanvasPattern | CanvasGradient | CanvasTextureCSSColor | CanvasPattern | CanvasGradient | CanvasTexture
CanvasFillStrokeStyles.createPattern(image: CanvasPatternSource, repetition: string | null): CanvasPattern | null(image: CanvasPatternSource, repetition: "" | PatternRepeat | null): CanvasPattern | null
CanvasTextDrawingStyles.fontStretchCanvasFontStretch(string & {}) | CanvasFontStretch
ImageDataExportSettings.mattestring | undefinedCSSColor | undefined
ImageDataExportSettings.colorSpace"srgb" | undefinedColorSpace | undefined
CanvasRenderingContext2D.filterstring(string & {}) | "none" | FilterFunction
CanvasRenderingContext2D.fillStylestring | CanvasPattern | CanvasGradient | CanvasTextureCSSColor | CanvasPattern | CanvasGradient | CanvasTexture
CanvasRenderingContext2D.drawCanvas(image: Canvas, dx: number, dy: number): void | (image: Canvas, dx: number, dy: number, dw: number, dh: number): void | (image: Canvas, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void(image: CanvasDrawable, dx: number, dy: number): void | (image: CanvasDrawable, dx: number, dy: number, dw: number, dh: number): void | (image: CanvasDrawable, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void
CanvasRenderingContext2D.fontStretchCanvasFontStretch(string & {}) | CanvasFontStretch
CanvasRenderingContext2D.outlineText(text: string, maxWidth?: number | undefined): Path2D(text: string, maxWidth?: number | undefined): Path2D | null
CanvasRenderingContext2D.shadowColorstringCSSColor
CanvasRenderingContext2D.strokeStylestring | CanvasPattern | CanvasGradient | CanvasTextureCSSColor | CanvasPattern | CanvasGradient | CanvasTexture
CanvasRenderingContext2D.createPattern(image: CanvasPatternSource, repetition: string | null): CanvasPattern | null(image: CanvasPatternSource, repetition: "" | PatternRepeat | null): CanvasPattern | null
CanvasRenderingContext2D.textDecorationstringTextDecorationSetting

Mới bị ngừng hỗ trợ

export@deprecated
skia-canvas · App.eventLoopEvent loop modes have been removed: the node event loop is now always available

Thay đổi yêu cầu (engines, phụ thuộc peer)

Không phát hiện.

Export mới (30)
importexportkind
skia-canvasCSSColortype
skia-canvasPngFilterstype
skia-canvasloadCanvasfunction
skia-canvasFontFeatureinterface
skia-canvasFontInstanceinterface
skia-canvasCanvasBackendinterface
skia-canvasColorFunctiontype
skia-canvasPatternRepeattype
skia-canvasFilterFunctiontype
skia-canvasImageDataArraytype
skia-canvasPolarColorSpacetype
skia-canvasTransformStringtype
skia-canvasImageLoadOptionstype
skia-canvasCanvasFontKerningtype
skia-canvasCanvasLoadOptionstype
skia-canvasFontVariationAxisinterface
skia-canvasPointerEventPropstype
skia-canvasTransformFunctiontype
skia-canvasFontVariantKeywordtype
skia-canvasCanvasTextRenderingtype
skia-canvasImageRequestOptionstype
skia-canvasFontVariantAlternatetype
skia-canvasCompositionEventPropstype
skia-canvasRectangularColorSpacetype
skia-canvasTextDecorationKeywordtype
skia-canvasTextDecorationSettingtype
skia-canvasHueInterpolationMethodtype
skia-canvasColorInterpolationMethodtype
skia-canvasCoalescedPointerEventPropstype
skia-canvasCanvasRenderingContext2DSettingsinterface

Cung cấp dữ liệu này cho tác tử AI của bạn

Vigia là máy chủ MCP miễn phí: tác tử lập trình của bạn kiểm tra phiên bản, thay đổi phá vỡ tương thích và lỗ hổng trước khi viết mã. Không cần đăng ký, không cần khóa API.

claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp

Thêm vào CursorThêm vào VS Code★ Gắn sao trên GitHub

Mọi ứng dụng MCP khác
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Kỹ năng cho tác tử (SKILL.md): cho tác tử biết khi nào dùng Vigia · GitHub Action cho pull request

Câu hỏi thường gặp

Nâng cấp skia-canvas từ 3 lên 4 có những thay đổi không tương thích nào?

Giữa skia-canvas 3.0.8 và 4.0.0, Vigia tìm thấy 0 export bị xóa, 13 chữ ký thay đổi và 46 thành viên lớp hoặc interface bị xóa hay thay đổi.

Những gì bị ngừng hỗ trợ trong skia-canvas 4?

1 export hoặc thành viên mới bị đánh dấu ngừng hỗ trợ trong skia-canvas 4.0.0.

Dành cho tác tử

GET https://vigia.coredls.cloud/v1/packages/npm/skia-canvas/upgrade?from=3.0.8&to=4.0.0