{
  "name": "com.wallstop-studios.unity-helpers",
  "version": "3.3.0",
  "displayName": "Unity Helpers",
  "description": "Treasure chest of Unity developer tools",
  "unity": "2021.3",
  "keywords": [
    "inspector-attributes",
    "custom-drawers",
    "editor-tools",
    "spatial-tree",
    "prng",
    "random",
    "serialization",
    "data-structures",
    "effects-system",
    "relational-components",
    "quadtree",
    "kdtree",
    "rtree",
    "octree",
    "serializable-dictionary",
    "serializable-hashset",
    "dependency-injection",
    "di-integration",
    "sprite-tools",
    "animation-tools",
    "extensions",
    "utility",
    "performance",
    "protobuf",
    "json"
  ],
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/wallstop/unity-helpers.git"
  },
  "bugs": {
    "url": "https://github.com/wallstop/unity-helpers/issues"
  },
  "signature": "unsigned",
  "author": "wallstop studios <wallstop@wallstopstudios.com> (https://wallstopstudios.com)",
  "homepage": "https://wallstop.github.io/unity-helpers",
  "documentationUrl": "https://wallstop.github.io/unity-helpers",
  "licensesUrl": "https://wallstop.github.io/unity-helpers/project/license/",
  "samples": [
    {
      "displayName": "DI – VContainer",
      "description": "LifetimeScope registration, scene-wide assignment, and runtime BuildUpWithRelations.",
      "path": "Samples~/DI - VContainer"
    },
    {
      "displayName": "DI – Zenject",
      "description": "SceneContext installer, scene-wide assignment, and prefab instantiation with relations.",
      "path": "Samples~/DI - Zenject"
    },
    {
      "displayName": "DI – Reflex",
      "description": "SceneScope installer, scene scan, and runtime Container helpers.",
      "path": "Samples~/DI - Reflex"
    },
    {
      "displayName": "Relational Components – Basic",
      "description": "Attribute-based auto-wiring without DI; parent/sibling/child examples.",
      "path": "Samples~/Relational Components - Basic"
    },
    {
      "displayName": "Serialization – JSON",
      "description": "System.Text.Json with Unity converters; pretty and fast options.",
      "path": "Samples~/Serialization - JSON"
    },
    {
      "displayName": "Random – PRNG",
      "description": "PCG seeds, floats, Gaussian, and list sampling.",
      "path": "Samples~/Random - PRNG"
    },
    {
      "displayName": "Logging – Tag Formatter",
      "description": "UnityLogTagFormatter decorators, runtime toggles, and logging extension demos.",
      "path": "Samples~/Logging - Tag Formatter"
    },
    {
      "displayName": "Spatial Structures – 2D and 3D",
      "description": "QuadTree2D, KdTree2D nearest neighbors, SpatialHash2D queries.",
      "path": "Samples~/Spatial Structures - 2D and 3D"
    },
    {
      "displayName": "UI Toolkit – MultiFile Selector (Editor)",
      "description": "EditorWindow using MultiFileSelectorElement for multi-file picking.",
      "path": "Samples~/UI Toolkit - MultiFile Selector (Editor)"
    },
    {
      "displayName": "UGUI – EnhancedImage",
      "description": "Programmatic Canvas setup and HDR-tinted EnhancedImage.",
      "path": "Samples~/UGUI - EnhancedImage"
    }
  ],
  "scripts": {
    "docs:serve": "bundle exec jekyll serve --baseurl \"\" --livereload",
    "docs:build": "bundle exec jekyll build --baseurl \"\"",
    "lint:docs": "node ./scripts/run-doc-link-lint.js",
    "lint:doc-links": "node ./scripts/run-doc-link-lint.js --verbose",
    "lint:code-samples": "node ./scripts/extract-code-samples.js --extract-only",
    "lint:code-samples:verbose": "node ./scripts/extract-code-samples.js --verbose --extract-only",
    "lint:spelling": "node ./scripts/run-node-bin.js cspell --no-progress --show-suggestions",
    "lint:spelling:verbose": "node ./scripts/run-node-bin.js cspell --show-suggestions",
    "lint:spelling:config": "node scripts/lint-cspell-config.js",
    "lint:spelling:config:fix": "node scripts/lint-cspell-config.js --fix",
    "lint:spelling:add": "node scripts/add-cspell-word.js",
    "lint:llm": "pwsh -NoProfile -File scripts/lint-llm-instructions.ps1",
    "lint:llm:fix": "pwsh -NoProfile -File scripts/lint-llm-instructions.ps1 -Fix",
    "lint:llm:verbose": "pwsh -NoProfile -File scripts/lint-llm-instructions.ps1 -VerboseOutput",
    "agent:preflight": "pwsh -NoProfile -File scripts/agent-preflight.ps1",
    "agent:preflight:fix": "pwsh -NoProfile -File scripts/agent-preflight.ps1 -Fix",
    "agent:preflight:verbose": "pwsh -NoProfile -File scripts/agent-preflight.ps1 -VerboseOutput",
    "hooks:install": "git config core.hooksPath .githooks && chmod +x .githooks/pre-commit .githooks/pre-merge-commit .githooks/pre-push",
    "postinstall": "node scripts/postinstall-hooks.js",
    "eol:check": "pwsh -NoProfile -File scripts/check-eol.ps1",
    "eol:fix": "pwsh -NoProfile -File scripts/normalize-eol.ps1",
    "format:md": "node ./scripts/run-prettier.js --write -- \"**/*.{md,markdown}\"",
    "format:md:check": "node ./scripts/run-prettier.js --check -- \"**/*.{md,markdown}\"",
    "format:json": "node ./scripts/run-prettier.js --write -- \"**/*.{json,jsonc,asmdef,asmref}\"",
    "format:json:check": "node ./scripts/run-prettier.js --check -- \"**/*.{json,jsonc,asmdef,asmref}\"",
    "format:js": "node ./scripts/run-prettier.js --write -- \"**/*.js\"",
    "format:js:check": "node ./scripts/run-prettier.js --check -- \"**/*.js\"",
    "format:yaml": "node ./scripts/run-prettier.js --write -- \"**/*.{yml,yaml}\"",
    "format:yaml:check": "node ./scripts/run-prettier.js --check -- \"**/*.{yml,yaml}\"",
    "format:check": "npm run format:md:check && npm run format:json:check && npm run format:yaml:check && npm run format:js:check",
    "format:fix": "npm run format:md && npm run format:json && npm run format:yaml && npm run format:js",
    "lint:changelog": "pwsh -NoProfile -File scripts/lint-changelog.ps1 -VerboseOutput",
    "lint:duplicate-usings": "pwsh -NoProfile -File scripts/lint-duplicate-usings.ps1 -VerboseOutput",
    "lint:yaml": "pwsh -NoProfile -File scripts/lint-yaml.ps1 -VerboseOutput",
    "lint:dependabot": "pwsh -NoProfile -File scripts/lint-dependabot.ps1 -VerboseOutput",
    "lint:pwsh-invocations": "pwsh -NoProfile -File scripts/lint-pwsh-invocations.ps1 -VerboseOutput",
    "validate:lint-error-codes": "pwsh -NoProfile -File scripts/validate-lint-error-codes.ps1 -VerboseOutput",
    "validate:git-push-config": "pwsh -NoProfile -File scripts/validate-git-push-config.ps1",
    "test:add-cspell-word": "node scripts/tests/test-add-cspell-word.js",
    "test:configure-git-defaults": "bash scripts/tests/test-configure-git-defaults.sh",
    "test:lint-dependabot": "pwsh -NoProfile -File scripts/tests/test-lint-dependabot.ps1 -VerboseOutput",
    "test:lint-duplicate-usings": "pwsh -NoProfile -File scripts/tests/test-lint-duplicate-usings.ps1 -VerboseOutput",
    "test:lint-pwsh-invocations": "pwsh -NoProfile -File scripts/tests/test-lint-pwsh-invocations.ps1 -VerboseOutput",
    "test:git-path-helpers": "pwsh -NoProfile -File scripts/tests/test-git-path-helpers.ps1 -VerboseOutput",
    "test:postinstall-hooks": "node scripts/tests/test-postinstall-hooks.js",
    "test:github-pages-sortable": "node scripts/tests/test-github-pages-sortable.js",
    "test:validate-git-push-config": "pwsh -NoProfile -File scripts/tests/test-validate-git-push-config.ps1 -VerboseOutput",
    "test:validate-lint-error-codes": "pwsh -NoProfile -File scripts/tests/test-validate-lint-error-codes.ps1 -VerboseOutput",
    "test:precommit-integration": "bash scripts/tests/test-precommit-integration.sh",
    "lint:markdown": "node ./scripts/run-node-bin.js markdownlint --config .markdownlint.json --ignore-path .markdownlintignore -- \"**/*.md\" \"**/*.markdown\"",
    "validate:content": "npm run lint:docs && npm run test:deprecated-external-links && npm run lint:markdown && npm run lint:changelog && npm run lint:yaml && npm run format:check && npm run lint:llm && npm run lint:doc-counts && npm run lint:dependabot && npm run lint:pwsh-invocations && npm run validate:lint-error-codes",
    "validate:tests": "npm run lint:tests && npm run test:gitignore-docs && npm run test:sync-script-contracts && npm run test:agent-preflight && npm run test:git-path-helpers && npm run test:postinstall-hooks && npm run test:github-pages-sortable && npm run test:add-cspell-word && npm run test:configure-git-defaults && npm run test:validate-git-push-config && npm run test:git-staging-helpers && npm run test:lint-dependabot && npm run test:lint-duplicate-usings && npm run test:lint-pwsh-invocations && npm run test:validate-lint-error-codes && npm run test:precommit-integration && npm run test:npm-package-signature && npm run test:npm-package-changelog",
    "validate:prepush": "npm run validate:content && npm run lint:spelling && npm run eol:check && npm run validate:tests && npm run lint:csharp-naming && npm run lint:duplicate-usings && npm run lint:spelling:config && npm run validate:devcontainer && npm run validate:hook-sync && npm run validate:hook-perms && npm run validate:hook-spell-parity && npm run validate:cspell-files-parity && npm run validate:git-push-config && npm run test:shell-portability",
    "validate:devcontainer": "pwsh -NoProfile -File scripts/validate-devcontainer-config.ps1 -VerboseOutput && npm run test:validate-devcontainer-urls && npm run test:post-create",
    "validate:hook-sync": "pwsh -NoProfile -File scripts/validate-hook-sync-calls.ps1 -VerboseOutput",
    "validate:hook-perms": "bash scripts/validate-hook-permissions.sh",
    "validate:hook-spell-parity": "bash scripts/tests/test-hook-spell-parity.sh",
    "validate:cspell-files-parity": "bash scripts/tests/test-cspell-hook-files-parity.sh",
    "lint:tests": "pwsh -NoProfile -File scripts/lint-tests.ps1 -VerboseOutput",
    "lint:doc-counts": "pwsh -NoProfile -File scripts/lint-doc-counts.ps1",
    "sync:doc-counts": "pwsh -NoProfile -File scripts/sync-doc-counts.ps1",
    "lint:csharp-naming": "pwsh -NoProfile -File scripts/lint-csharp-naming.ps1 -VerboseOutput",
    "lint:unity-file-naming": "pwsh -NoProfile -File scripts/lint-unity-file-naming.ps1 -VerboseOutput",
    "validate:npm-package": "pwsh -NoProfile -File scripts/validate-npm-package.ps1 -VerboseOutput",
    "test:lint-unity-file-naming": "pwsh -NoProfile -File scripts/tests/test-lint-unity-file-naming.ps1 -VerboseOutput",
    "test:gitignore-docs": "pwsh -NoProfile -File scripts/tests/test-gitignore-docs.ps1",
    "test:sync-script-contracts": "pwsh -NoProfile -File scripts/tests/test-sync-script-contracts.ps1",
    "test:agent-preflight": "pwsh -NoProfile -File scripts/tests/test-agent-preflight.ps1",
    "test:git-staging-helpers": "bash scripts/tests/test-git-staging-helpers.sh",
    "test:deprecated-external-links": "pwsh -NoProfile -File scripts/tests/test-deprecated-external-links.ps1 -VerboseOutput",
    "test:validate-devcontainer-urls": "bash scripts/tests/test-validate-devcontainer-urls.sh",
    "test:final-newline": "bash scripts/tests/test-final-newline.sh",
    "test:post-create": "bash scripts/tests/test-post-create.sh",
    "test:wiki-generation": "bash scripts/tests/test-wiki-generation.sh",
    "test:shell-portability": "bash scripts/tests/test-shell-portability.sh",
    "test:npm-package-signature": "pwsh -NoProfile -File scripts/tests/test-npm-package-signature.ps1 -VerboseOutput",
    "test:npm-package-changelog": "pwsh -NoProfile -File scripts/tests/test-npm-package-changelog.ps1 -VerboseOutput",
    "verify:tools": "bash scripts/verify-devcontainer-tools.sh",
    "codex:login": "bash scripts/codex-login.sh",
    "codex:login:browser": "bash scripts/codex-login.sh --browser",
    "codex:yolo": "bash scripts/codex-yolo.sh",
    "unity:setup-license": "pwsh -NoProfile -File scripts/unity/setup-license.ps1",
    "unity:validate": "bash scripts/unity/validate-license-setup.sh",
    "unity:setup": "bash scripts/unity/setup.sh",
    "unity:compile": "bash scripts/unity/compile.sh",
    "unity:test": "bash scripts/unity/run-tests.sh",
    "unity:test:editmode": "bash scripts/unity/run-tests.sh --mode editmode",
    "unity:test:playmode": "bash scripts/unity/run-tests.sh --mode playmode",
    "unity:test:all": "bash scripts/unity/run-tests.sh --mode all",
    "unity:generate-activation": "bash scripts/unity/generate-activation.sh",
    "unity:retry-license": "bash scripts/unity/retry-license.sh"
  },
  "devDependencies": {
    "cspell": "^10.0.0",
    "markdownlint-cli": "^0.48.0",
    "prettier": "^3.8.3"
  }
}
