{
    "name": "@bensitu/image-editor",
    "version": "3.0.0",
    "packageManager": "npm@11.15.0",
    "description": "TypeScript-first Fabric.js v7 image editor with masks, annotations, crop, mosaic, history, and export APIs",
    "license": "MIT",
    "author": "Ben Situ",
    "repository": {
        "type": "git",
        "url": "git+https://github.com/bensitu/image-editor.git"
    },
    "homepage": "https://github.com/bensitu/image-editor#readme",
    "bugs": {
        "url": "https://github.com/bensitu/image-editor/issues"
    },
    "type": "module",
    "workspaces": [
        "examples/fabric-vs-framework-redaction",
        "examples/react-basic",
        "examples/reference-plugins/*",
        "examples/svelte-basic",
        "examples/vanilla-core",
        "examples/vanilla-dom-controls",
        "examples/vue-basic",
        "packages/*"
    ],
    "main": "./dist/cjs/index.cjs",
    "module": "./dist/esm/index.js",
    "types": "./dist/types/index.d.ts",
    "unpkg": "./dist/umd/image-editor.full.umd.min.js",
    "jsdelivr": "./dist/umd/image-editor.full.umd.min.js",
    "exports": {
        ".": {
            "import": {
                "types": "./dist/types/index.d.ts",
                "default": "./dist/esm/index.js"
            },
            "require": {
                "types": "./dist/types/index.d.cts",
                "default": "./dist/cjs/index.cjs"
            },
            "default": "./dist/esm/index.js"
        },
        "./core": {
            "import": {
                "types": "./dist/types/core/index.d.ts",
                "default": "./dist/esm/core/index.js"
            },
            "require": {
                "types": "./dist/types/core/index.d.cts",
                "default": "./dist/cjs/core/index.cjs"
            }
        },
        "./sdk": {
            "import": {
                "types": "./dist/types/sdk/index.d.ts",
                "default": "./dist/esm/sdk/index.js"
            },
            "require": {
                "types": "./dist/types/sdk/index.d.cts",
                "default": "./dist/cjs/sdk/index.cjs"
            }
        },
        "./testing": {
            "import": {
                "types": "./dist/types/testing/index.d.ts",
                "default": "./dist/esm/testing/index.js"
            },
            "require": {
                "types": "./dist/types/testing/index.d.cts",
                "default": "./dist/cjs/testing/index.cjs"
            }
        },
        "./migrate-v2": {
            "import": {
                "types": "./dist/types/migrate-v2/index.d.ts",
                "default": "./dist/esm/migrate-v2/index.js"
            },
            "require": {
                "types": "./dist/types/migrate-v2/index.d.cts",
                "default": "./dist/cjs/migrate-v2/index.cjs"
            }
        },
        "./plugins/overlay": {
            "import": {
                "types": "./dist/types/foundations/overlay/index.d.ts",
                "default": "./dist/esm/foundations/overlay/index.js"
            },
            "require": {
                "types": "./dist/types/foundations/overlay/index.d.cts",
                "default": "./dist/cjs/foundations/overlay/index.cjs"
            }
        },
        "./plugins/annotation": {
            "import": {
                "types": "./dist/types/foundations/annotation/index.d.ts",
                "default": "./dist/esm/foundations/annotation/index.js"
            },
            "require": {
                "types": "./dist/types/foundations/annotation/index.d.cts",
                "default": "./dist/cjs/foundations/annotation/index.cjs"
            }
        },
        "./plugins/transform": {
            "import": {
                "types": "./dist/types/plugins/transform/index.d.ts",
                "default": "./dist/esm/plugins/transform/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/transform/index.d.cts",
                "default": "./dist/cjs/plugins/transform/index.cjs"
            }
        },
        "./plugins/mask": {
            "import": {
                "types": "./dist/types/plugins/mask/index.d.ts",
                "default": "./dist/esm/plugins/mask/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/mask/index.d.cts",
                "default": "./dist/cjs/plugins/mask/index.cjs"
            }
        },
        "./plugins/history": {
            "import": {
                "types": "./dist/types/plugins/history/index.d.ts",
                "default": "./dist/esm/plugins/history/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/history/index.d.cts",
                "default": "./dist/cjs/plugins/history/index.cjs"
            }
        },
        "./plugins/filters": {
            "import": {
                "types": "./dist/types/plugins/filters/index.d.ts",
                "default": "./dist/esm/plugins/filters/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/filters/index.d.cts",
                "default": "./dist/cjs/plugins/filters/index.cjs"
            }
        },
        "./plugins/crop": {
            "import": {
                "types": "./dist/types/plugins/crop/index.d.ts",
                "default": "./dist/esm/plugins/crop/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/crop/index.d.cts",
                "default": "./dist/cjs/plugins/crop/index.cjs"
            }
        },
        "./plugins/mosaic": {
            "import": {
                "types": "./dist/types/plugins/mosaic/index.d.ts",
                "default": "./dist/esm/plugins/mosaic/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/mosaic/index.d.cts",
                "default": "./dist/cjs/plugins/mosaic/index.cjs"
            }
        },
        "./plugins/annotation-text": {
            "import": {
                "types": "./dist/types/plugins/annotation-text/index.d.ts",
                "default": "./dist/esm/plugins/annotation-text/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/annotation-text/index.d.cts",
                "default": "./dist/cjs/plugins/annotation-text/index.cjs"
            }
        },
        "./plugins/annotation-shape": {
            "import": {
                "types": "./dist/types/plugins/annotation-shape/index.d.ts",
                "default": "./dist/esm/plugins/annotation-shape/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/annotation-shape/index.d.cts",
                "default": "./dist/cjs/plugins/annotation-shape/index.cjs"
            }
        },
        "./plugins/annotation-draw": {
            "import": {
                "types": "./dist/types/plugins/annotation-draw/index.d.ts",
                "default": "./dist/esm/plugins/annotation-draw/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/annotation-draw/index.d.cts",
                "default": "./dist/cjs/plugins/annotation-draw/index.cjs"
            }
        },
        "./plugins/overlay-state": {
            "import": {
                "types": "./dist/types/plugins/overlay-state/index.d.ts",
                "default": "./dist/esm/plugins/overlay-state/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/overlay-state/index.d.cts",
                "default": "./dist/cjs/plugins/overlay-state/index.cjs"
            }
        },
        "./plugins/dom-controls": {
            "import": {
                "types": "./dist/types/plugins/dom-controls/index.d.ts",
                "default": "./dist/esm/plugins/dom-controls/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/dom-controls/index.d.cts",
                "default": "./dist/cjs/plugins/dom-controls/index.cjs"
            }
        },
        "./plugins/canvas-interactions": {
            "import": {
                "types": "./dist/types/plugins/canvas-interactions/index.d.ts",
                "default": "./dist/esm/plugins/canvas-interactions/index.js"
            },
            "require": {
                "types": "./dist/types/plugins/canvas-interactions/index.d.cts",
                "default": "./dist/cjs/plugins/canvas-interactions/index.cjs"
            }
        },
        "./presets/minimal": {
            "import": {
                "types": "./dist/types/presets/minimal/index.d.ts",
                "default": "./dist/esm/presets/minimal/index.js"
            },
            "require": {
                "types": "./dist/types/presets/minimal/index.d.cts",
                "default": "./dist/cjs/presets/minimal/index.cjs"
            }
        },
        "./presets/redaction": {
            "import": {
                "types": "./dist/types/presets/redaction/index.d.ts",
                "default": "./dist/esm/presets/redaction/index.js"
            },
            "require": {
                "types": "./dist/types/presets/redaction/index.d.cts",
                "default": "./dist/cjs/presets/redaction/index.cjs"
            }
        },
        "./presets/annotation": {
            "import": {
                "types": "./dist/types/presets/annotation/index.d.ts",
                "default": "./dist/esm/presets/annotation/index.js"
            },
            "require": {
                "types": "./dist/types/presets/annotation/index.d.cts",
                "default": "./dist/cjs/presets/annotation/index.cjs"
            }
        },
        "./presets/full": {
            "import": {
                "types": "./dist/types/presets/full/index.d.ts",
                "default": "./dist/esm/presets/full/index.js"
            },
            "require": {
                "types": "./dist/types/presets/full/index.d.cts",
                "default": "./dist/cjs/presets/full/index.cjs"
            }
        }
    },
    "files": [
        "dist",
        "!dist/esm/umd",
        "README.md",
        "LICENSE",
        "CHANGELOG.md"
    ],
    "scripts": {
        "clean": "rimraf dist",
        "build:esm": "tsc -p tsconfig.build.json && node scripts/prune-distribution-output.mjs --esm",
        "build:cjs": "rolldown -c rolldown.config.mjs --environment FORMAT:cjs",
        "build:types": "tsc -p tsconfig.types.json && node scripts/emit-cjs-types.mjs",
        "build:umd": "rolldown -c rolldown.config.mjs --environment FORMAT:umd",
        "build:prune": "node scripts/prune-distribution-output.mjs",
        "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:types && npm run build:umd && npm run build:prune",
        "prepack": "npm run build",
        "prepublishOnly": "npm run check:release",
        "build:bundle-fixtures": "npm run build --workspace @bensitu/reference-blur-region --workspace @bensitu/reference-watermark",
        "package:pages": "node scripts/package-pages-site.mjs",
        "demo:local": "npm run build && vite --host 127.0.0.1 --open /docs/",
        "dev": "tsc --watch",
        "format": "prettier . --write",
        "format:check": "prettier . --check",
        "lint": "eslint . --max-warnings=0",
        "lint:fix": "eslint . --fix",
        "package:check": "publint",
        "test": "npm run build:codemod && node scripts/run-node-tests.mjs",
        "test:plugin-kernel": "node scripts/run-node-tests.mjs tests/plugin-kernel",
        "test:sdk": "node scripts/run-node-tests.mjs tests/sdk",
        "test:conformance": "node scripts/run-node-tests.mjs tests/conformance",
        "test:plugin-lint": "node --import ./tests/helpers/register-ts-loader.mjs --test tests/sdk/plugin-lint.test.ts",
        "test:core-contract": "node scripts/run-node-tests.mjs tests/core",
        "test:transform-plugin": "node scripts/run-node-tests.mjs tests/plugins/transform",
        "test:overlay-foundation": "node scripts/run-node-tests.mjs tests/foundations/overlay",
        "test:mask-plugin": "node scripts/run-node-tests.mjs tests/plugins/mask",
        "test:history-plugin": "node scripts/run-node-tests.mjs tests/plugins/history",
        "test:filters-plugin": "node scripts/run-node-tests.mjs tests/plugins/filters",
        "test:crop-plugin": "node scripts/run-node-tests.mjs tests/plugins/crop",
        "test:mosaic-plugin": "node scripts/run-node-tests.mjs tests/plugins/mosaic",
        "test:annotation-foundation": "node scripts/run-node-tests.mjs tests/foundations/annotation",
        "test:annotation-text": "node scripts/run-node-tests.mjs tests/plugins/annotation-text",
        "test:annotation-shape": "node scripts/run-node-tests.mjs tests/plugins/annotation-shape",
        "test:annotation-draw": "node scripts/run-node-tests.mjs tests/plugins/annotation-draw",
        "test:annotation-integration": "node scripts/run-node-tests.mjs tests/plugins/annotation",
        "test:overlay-state": "node scripts/run-node-tests.mjs tests/plugins/overlay-state",
        "test:dom-controls": "node scripts/run-node-tests.mjs tests/plugins/dom-controls",
        "test:canvas-interactions": "node scripts/run-node-tests.mjs tests/plugins/canvas-interactions",
        "test:presets": "node scripts/run-node-tests.mjs tests/presets",
        "test:migration": "node scripts/run-node-tests.mjs tests/migrate-v2",
        "build:codemod": "npm run build --workspace @bensitu/image-editor-codemod",
        "test:codemod": "npm run build:codemod && node --import ./tests/helpers/register-ts-loader.mjs --test tests/codemod/codemod.test.ts && npm run test:codemod-types",
        "test:codemod-types": "tsc -p tests/codemod/tsconfig.json --noEmit",
        "test:codemod-package": "node scripts/check-codemod-package.mjs",
        "test:package-entries": "node tests/package/esm-consumer.mjs && node tests/package/cjs-consumer.cjs",
        "test:packed-entries": "node scripts/check-packed-entries.mjs",
        "test:package-isolation": "node scripts/check-package-isolation.mjs --check",
        "test:package-types": "tsc -p tests/package/tsconfig.json --noEmit",
        "test:reference-plugins": "node scripts/check-reference-plugins.mjs --check",
        "test:types": "tsc -p tests/types/tsconfig.json --noEmit",
        "test:e2e": "playwright test tests/browser/e2e --project=chromium",
        "test:e2e:all": "playwright test tests/browser/e2e",
        "test:visual": "playwright test tests/browser/visual --project=chromium",
        "test:visual:update": "playwright test tests/browser/visual --project=chromium --update-snapshots",
        "test:browser": "playwright test tests/browser --project=chromium",
        "test:browser:release": "npm run test:e2e:all && npm run test:visual",
        "test:umd": "npm run check:umd && playwright test tests/browser/umd --project=chromium",
        "check:pr": "node scripts/check-gates.mjs pr",
        "check:release": "node scripts/check-gates.mjs release",
        "typecheck": "tsc -p tsconfig.json --noEmit",
        "typecheck:tests": "tsc -p tests/tsconfig.runtime.json --noEmit",
        "check:architecture": "node scripts/check-architecture.mjs",
        "precheck:bundle-size": "npm run build:bundle-fixtures",
        "check:bundle-size": "node scripts/check-bundle-size.mjs",
        "check:npm-pack-contents": "node scripts/check-npm-pack-contents.mjs",
        "check:testing-isolation": "node scripts/check-testing-isolation.mjs",
        "check:official-plugins": "node scripts/check-official-plugin-compliance.mjs --check",
        "check:umd": "node scripts/check-umd.mjs --check",
        "check:public-api": "node scripts/check-public-api.mjs --check",
        "check:examples": "node scripts/check-examples.mjs",
        "check:committed-dist": "node scripts/check-committed-dist.mjs",
        "check:deterministic-build": "node scripts/check-deterministic-build.mjs",
        "check:security": "node scripts/check-security.mjs",
        "benchmark:performance": "node --expose-gc --import ./tests/helpers/register-ts-loader.mjs scripts/benchmark-performance-hotspots.mjs",
        "generate:public-api": "node scripts/check-public-api.mjs --generate",
        "check": "npm run format:check && npm run lint && npm run typecheck && npm run typecheck:tests && npm test",
        "ci": "npm run check:pr"
    },
    "peerDependencies": {
        "fabric": ">=7.4.0 <8"
    },
    "devDependencies": {
        "@eslint/js": "^10.0.1",
        "@playwright/test": "^1.62.1",
        "@types/jsdom": "^28.0.3",
        "@types/node": "^22.0.0",
        "@types/semver": "^7.8.0",
        "canvas": "^3.2.3",
        "eslint": "^10.8.1",
        "eslint-config-prettier": "^10.1.8",
        "expect-type": "^1.4.0",
        "fabric": ">=7.4.0 <8",
        "fast-check": "^4.9.0",
        "globals": "^17.11.0",
        "jsdom": "^28.1.0",
        "prettier": "3.9.6",
        "prettier-plugin-svelte": "^4.1.1",
        "publint": "^0.3.23",
        "rimraf": "^6.1.3",
        "rolldown": "1.2.4",
        "semver": "7.8.5",
        "tslib": "^2.8.1",
        "typescript": "^6.0.3",
        "typescript-eslint": "^8.67.0",
        "vite": "^8.2.1"
    },
    "keywords": [
        "canvas",
        "fabric",
        "fabricjs",
        "image-editor",
        "mask",
        "crop",
        "transform",
        "typescript"
    ],
    "engines": {
        "node": ">=22.12.0"
    },
    "devEngines": {
        "runtime": {
            "name": "node",
            "version": ">=22.12.0",
            "onFail": "error"
        },
        "packageManager": {
            "name": "npm",
            "version": "11.15.0",
            "onFail": "error"
        }
    },
    "publishConfig": {
        "access": "public",
        "provenance": true
    },
    "sideEffects": false
}
