{
  "name": "ranger-compiler",
  "version": "3.5.1",
  "description": "Ranger cross-language compiler - compile once, run anywhere",
  "main": "dist/api.js",
  "types": "dist/api.d.ts",
  "bin": {
    "ranger-compiler": "dist/rgrc.js",
    "rgrc": "dist/rgrc.js"
  },
  "files": [
    "dist/",
    "README.md",
    "CHANGELOG.md",
    "LICENSE",
    "LICENSE-MIT"
  ],
  "publishConfig": {
    "access": "public",
    "registry": "https://registry.npmjs.org/"
  },
  "engines": {
    "node": ">=18.0.0"
  },
  "scripts": {
    "book:test": "bash scripts/rgr-suite.sh ./gallery/book/tests/BookTest.rgr ./gallery/book/bin BookTest.js",
    "book:test:go": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=go ./gallery/book/tests/BookTest.rgr -d=./gallery/book/bin -o=BookTest.go -nodecli && go run ./gallery/book/bin/BookTest.go",
    "book:test:python": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=python ./gallery/book/tests/BookTest.rgr -d=./gallery/book/bin -o=BookTest.py -nodecli && python3 ./gallery/book/bin/BookTest.py",
    "book:demo": "bash scripts/rgr-suite.sh ./gallery/book/src/book_demo.rgr ./gallery/book/bin book_demo.js",
    "book:album": "bash scripts/rgr-suite.sh ./gallery/book/src/book_album.rgr ./gallery/book/bin book_album.js",
    "book:photos": "bash scripts/rgr-suite.sh ./gallery/book/src/book_photos.rgr ./gallery/book/bin book_photos.js",
    "book:photos:test": "node gallery/book/tools/mac_photos.mjs --self-test",
    "book:sdl": "bash gallery/book/platform/sdl/build.sh",
    "book:sdl:run": "bash gallery/book/platform/sdl/build.sh --run gallery/book/platform/sdl/book.config.json",
    "book:sdl:smoke": "bash gallery/book/platform/sdl/build.sh --smoke",
    "book:slides": "bash scripts/rgr-suite.sh ./gallery/book/src/book_slides.rgr ./gallery/book/bin book_slides.js",
    "book:slides:test": "bash scripts/rgr-suite.sh ./gallery/book/tests/BookSlidesTest.rgr ./gallery/book/bin BookSlidesTest.js",
    "book:module": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/book/src/BookApp.rgr -d=./gallery/book/bin -o=book_app_module.cjs",
    "book:editor:test": "bash scripts/rgr-suite.sh ./gallery/book/tests/BookEditorTest.rgr ./gallery/book/bin BookEditorTest.js",
    "book:window": "npm run book:module && node gallery/book/web/serve.mjs --open",
    "book:window:smoke": "npm run book:module && node gallery/book/web/browser.mjs",
    "book:web": "bash gallery/book/web/standalone/build.sh",
    "book:web:serve": "bash gallery/book/web/standalone/build.sh && python3 -m http.server -d gallery/book/web/standalone/dist 8003",
    "book:web:test": "bash gallery/book/web/standalone/build.sh && node gallery/book/web/standalone/smoke.mjs",
    "book:print": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/book/src/book_print.rgr -d=./gallery/book/bin -o=book_print.js -nodecli && node ./gallery/book/bin/book_print.js && npm run evgpdf:compile && bash gallery/book/output/render.sh",
    "book:pdf": "npm run book:demo && npm run evgpdf:compile && node ./gallery/pdf_writer/bin/evg_pdf_tool.js ./gallery/book/output/book.tsx ./gallery/book/output/book.pdf -w 595.28 -h 595.28",
    "docs:extract": "node docs/tools/extract-operators.mjs",
    "docs:examples": "node docs/tools/build-examples.mjs",
    "docs:render": "node docs/tools/render-pages.mjs",
    "docs:coverage": "node docs/tools/check-coverage.mjs",
    "docs:generate": "npm run docs:extract && npm run docs:examples && npm run docs:render && npm run docs:coverage",
    "docs:dev": "npm run docs:generate && npm --prefix docs/site run dev",
    "docs:build": "npm run docs:generate && npm --prefix docs/site run build",
    "docs:lint": "vale --config docs/style/vale/.vale.ini docs/site/src/content/docs docs/descriptions",
    "office:metrics:closure": "node scripts/check-office-metrics-closure.mjs",
    "office:history:editors:test": "bash scripts/rgr-suite.sh ./gallery/office/editor/tests/OfficeHistoryEditorsTest.rgr ./gallery/office/bin OfficeHistoryEditorsTest.js",
    "office:caret:editors:test": "bash scripts/rgr-suite.sh ./gallery/office/text/tests/OfficeCaretEditorsTest.rgr ./gallery/office/bin OfficeCaretEditorsTest.js",
    "office:reference": "bash gallery/office/docs/build.sh",
    "office:docs:generate": "bash gallery/office/docs/build.sh",
    "office:docs:sync-playground": "node gallery/office/docs/tools/sync-playground.mjs",
    "office:docs:sync-chart-api": "node gallery/office/docs/tools/sync-chart-api.mjs",
    "office:docs:dev": "npm run office:docs:generate && npm run office:docs:sync-playground && npm run office:docs:sync-chart-api && npm --prefix gallery/office/docs/site run dev",
    "office:docs": "npm run office:docs:generate && npm run office:docs:sync-playground && npm run office:docs:sync-chart-api && npm --prefix gallery/office/docs/site run build",
    "build:dist": "npm run compile && npm run build:dist:copy && npm run build:dist:module",
    "build:dist:copy": "cp ./bin/output.js ./dist/rgrc.js && cp ./bin/Lang.rgr ./dist/Lang.rgr && cp ./bin/stdops.rgr ./dist/stdops.rgr && cp ./bin/git-http.mjs ./dist/git-http.mjs && rm -rf dist/lib && cp -r ./lib ./dist/lib",
    "build:dist:module": "node bin/output.js -nodemodule -es6 -typescript ./compiler/ng_Compiler.rgr -d=./compiler/bin -o=api.ts && tsc --ignoreConfig --declaration --module commonjs --target es2015 --moduleResolution node --ignoreDeprecations 6.0 --outDir ./dist ./compiler/bin/api.ts",
    "prepublishOnly": "npm run build:dist && npm run test:publish",
    "test-any-ts": "node bin/testcomp.js ./features/any/test_any.rgr -es6 -typescript",
    "test-any-csharp": "node bin/testcomp.js ./features/any/test_any.rgr -l=csharp",
    "test-any": "npm run testcompiler && node bin/testcomp.js -es6 ./features/any/test_any.rgr -es6 -o=test_any.js",
    "example-svgpath": "rgrc -es6 ./examples/SVGPath/SVGPath.rgr -es6 -typescript -o=SVGPath.ts",
    "testcompiler": "rgrc -es6 ./compiler/ng_Compiler.rgr -nodecli -d=./bin -o=testcomp.js",
    "compileg": "rgrc -es6 ./compiler/ng_Compiler.rgr -nodecli",
    "selfhost:compile:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node --max-old-space-size=8192 bin/output.js -l=cpp ./compiler/ng_Compiler.rgr -nodecli -d=./tmp/selfhost -o=ranger_compiler.cpp",
    "selfhost:check:cpp": "npm run selfhost:compile:cpp && g++ -std=c++17 -fsyntax-only ./tmp/selfhost/ranger_compiler.cpp",
    "selfhost:build:cpp": "npm run selfhost:compile:cpp && g++ -std=c++17 -O1 -o ./tmp/selfhost/rangerc ./tmp/selfhost/ranger_compiler.cpp && npm run selfhost:copylibs",
    "selfhost:compile:dart": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node --max-old-space-size=8192 bin/output.js -l=dart ./compiler/ng_Compiler.rgr -nodecli -d=./tmp/selfhost-dart -o=ranger_compiler.dart",
    "selfhost:check:dart": "npm run selfhost:compile:dart && dart analyze --no-fatal-warnings ./tmp/selfhost-dart/ranger_compiler.dart",
    "selfhost:copylibs": "cp ./compiler/Lang.rgr ./tmp/selfhost/Lang.rgr && cp ./lib/stdops.rgr ./tmp/selfhost/stdops.rgr && mkdir -p ./tmp/selfhost/lib && cp ./lib/*.rgr ./tmp/selfhost/lib/",
    "selfhost:build:dart": "npm run selfhost:check:dart && npm run selfhost:copylibs:dart",
    "selfhost:compile:python": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node --max-old-space-size=8192 bin/output.js -l=python ./compiler/ng_Compiler.rgr -nodecli -d=./tmp/selfhost-python -o=ranger_compiler.py",
    "selfhost:check:python": "npm run selfhost:compile:python && python3 -m py_compile ./tmp/selfhost-python/ranger_compiler.py",
    "selfhost:build:python": "npm run selfhost:check:python && npm run selfhost:copylibs:python",
    "selfhost:copylibs:python": "cp ./compiler/Lang.rgr ./tmp/selfhost-python/Lang.rgr && cp ./lib/stdops.rgr ./tmp/selfhost-python/stdops.rgr && mkdir -p ./tmp/selfhost-python/lib && cp ./lib/*.rgr ./tmp/selfhost-python/lib/",
    "selfhost:copylibs:dart": "cp ./compiler/Lang.rgr ./tmp/selfhost-dart/Lang.rgr && cp ./lib/stdops.rgr ./tmp/selfhost-dart/stdops.rgr && mkdir -p ./tmp/selfhost-dart/lib && cp ./lib/*.rgr ./tmp/selfhost-dart/lib/",
    "selfhost:compile:csharp": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node --max-old-space-size=8192 bin/output.js -l=csharp ./compiler/ng_Compiler.rgr -nodecli -d=./tmp/selfhost-csharp -o=ranger_compiler.cs",
    "selfhost:check:csharp": "npm run selfhost:compile:csharp && mcs -langversion:latest -out:./tmp/selfhost-csharp/ranger_compiler.exe ./tmp/selfhost-csharp/ranger_compiler.cs",
    "selfhost:build:csharp": "npm run selfhost:check:csharp && npm run selfhost:copylibs:csharp",
    "selfhost:copylibs:csharp": "cp ./compiler/Lang.rgr ./tmp/selfhost-csharp/Lang.rgr && cp ./lib/stdops.rgr ./tmp/selfhost-csharp/stdops.rgr && mkdir -p ./tmp/selfhost-csharp/lib && cp ./lib/*.rgr ./tmp/selfhost-csharp/lib/",
    "selfhost:compile:go": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node --max-old-space-size=8192 bin/output.js -l=go ./compiler/ng_Compiler.rgr -nodecli -d=./tmp/selfhost-go -o=ranger_compiler.go",
    "selfhost:check:go": "npm run selfhost:compile:go && cd ./tmp/selfhost-go && go build -o rangerc_check ./ranger_compiler.go",
    "selfhost:build:go": "npm run selfhost:compile:go && cd ./tmp/selfhost-go && go build -o rangerc ./ranger_compiler.go && cd ../.. && npm run selfhost:copylibs:go",
    "selfhost:copylibs:go": "cp ./compiler/Lang.rgr ./tmp/selfhost-go/Lang.rgr && cp ./lib/stdops.rgr ./tmp/selfhost-go/stdops.rgr && mkdir -p ./tmp/selfhost-go/lib && cp ./lib/*.rgr ./tmp/selfhost-go/lib/",
    "selfhost:compile:kotlin": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node --max-old-space-size=8192 bin/output.js -l=kotlin ./compiler/ng_Compiler.rgr -nodecli -d=./tmp/selfhost-kotlin -o=ranger_compiler.kt",
    "selfhost:check:kotlin": "npm run selfhost:compile:kotlin && kotlinc -J-Xmx12g ./tmp/selfhost-kotlin/ranger_compiler.kt -include-runtime -d ./tmp/selfhost-kotlin/rangerc.jar",
    "selfhost:build:kotlin": "npm run selfhost:check:kotlin && npm run selfhost:copylibs:kotlin",
    "selfhost:copylibs:kotlin": "cp ./compiler/Lang.rgr ./tmp/selfhost-kotlin/Lang.rgr && cp ./lib/stdops.rgr ./tmp/selfhost-kotlin/stdops.rgr && mkdir -p ./tmp/selfhost-kotlin/lib && cp ./lib/*.rgr ./tmp/selfhost-kotlin/lib/",
    "compile": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./compiler/ng_Compiler.rgr -nodecli -d=./bin -o=output.js && npm run compile:fixcrlf && npm run compile:copylibs",
    "compile:fixcrlf": "sed -i '' 's/\\r$//' bin/output.js || sed -i 's/\\r$//' bin/output.js || true",
    "compile:copylibs": "cp ./compiler/Lang.rgr ./bin/Lang.rgr && cp ./lib/stdops.rgr ./bin/stdops.rgr",
    "compile:win": "cross-env RANGER_LIB=./compiler/Lang.rgr;./lib/stdops.rgr node bin/output.js -es6 ./compiler/ng_Compiler.rgr -nodecli -d=./bin -o=output.js && copy .\\compiler\\Lang.rgr .\\bin\\Lang.rgr && copy .\\lib\\stdops.rgr .\\bin\\stdops.rgr",
    "compile:langserver": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./compiler/VirtualCompiler.rgr -d=./ranger-vscode-extension/compiler -o=output.js",
    "test:error": "node bin/output.js ./tests/cli/test_error.rgr -o=test_error.js",
    "try": "node bin/output.js -es6 ./compiler/ng_Compiler.rgr -nodecli -o=try.js",
    "compilets": "node bin/output.js -es6 -typescript ./compiler/ng_Compiler.rgr -d=./compiler/bin -o=compiler.ts -nodecli && tsc --module commonjs --target es2015 --moduleResolution node --outDir ./dist ./compiler/bin/compiler.ts",
    "module": "npm run build:dist:module",
    "evalvalue:module": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 -nodemodule ./gallery/pdf_writer/src/tools/eval_value_module.rgr -d=./gallery/pdf_writer/bin -o=eval_value_module.cjs",
    "test:evalvalue": "npm run evalvalue:module && vitest run --config gallery/pdf_writer/vitest.config.js",
    "test": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vitest run --config tests/vitest.config.ts",
    "engine:build": "bash scripts/ranger-engine-build.sh",
    "engine:demo": "cross-env RANGER_LIB=\"./compiler/;./lib/\" node gallery/ranger_engine/bin/rg_run.js gallery/ranger_engine/examples/demo.rgr -report",
    "engine:bench": "node scripts/ranger-engine-bench.mjs",
    "engine:native": "bash scripts/ranger-engine-build.sh build cli native",
    "engine:cli:demo": "bash scripts/ranger-engine-cli-demo.sh",
    "test:engine": "vitest run --config tests/vitest.config.ts ranger-engine.test.ts",
    "vela:test": "bash gallery/vela/tests/run.sh",
    "vela:showcase": "bash gallery/vela/tools/build-showcase-page.sh",
    "vela:parity": "node gallery/vela/tools/reference/parity.mjs",
    "vela:cpp": "bash gallery/vela/tests/run_cpp.sh",
    "vela:compiler": "node gallery/vela/tools/reference/compiler.mjs",
    "vela:render": "node gallery/vela/tools/reference/render.mjs",
    "vela:coverage": "node gallery/vela/tools/reference/coverage.mjs",
    "vela:aria": "node gallery/vela/tools/reference/aria.mjs",
    "vela:chart": "bash gallery/vela/tools/chart-api-demo.sh",
    "vela:chart:check": "node gallery/vela/tools/reference/chart_api.mjs",
    "vela:types": "node gallery/vela/tools/reference/compiler.mjs gallery/vela/tests/chart_types",
    "vela:web": "bash gallery/vela/web/build.sh",
    "vela:web:test": "node gallery/vela/web/smoke.mjs",
    "jsengine:check": "bash scripts/cpp-toolchain.sh",
    "jsengine:build": "bash scripts/engine-build.sh",
    "jsengine:bench": "node scripts/engine-bench.cjs",
    "jsengine:conformance": "bash scripts/engine-conformance.sh",
    "jsengine:test": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vitest run --config tests/vitest.config.ts runtime-conformance.test.ts",
    "jsengine:test:targets": "npm run test:tsengine",
    "jsengine:octane": "node gallery/game_engine/v2/interp/bench/zoo_octane/run.cjs",
    "jsengine:all": "npm run jsengine:build && npm run jsengine:bench && npm run jsengine:octane && npm run jsengine:conformance",
    "test:publish": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vitest run --config tests/vitest.publish.config.ts",
    "test:es6": "vitest run --config tests/vitest.config.ts compiler.test.ts",
    "format:native": "python3 scripts/fmt_native.py",
    "format:native:check": "python3 scripts/fmt_native.py --check",
    "format:measure": "python3 scripts/fmt_measure.py",
    "format:parity": "bash scripts/fmt_parity.sh",
    "format:runcheck": "bash scripts/fmt_runcheck.sh",
    "format:reserved": "python3 scripts/reserved_probe.py es6 go rust cpp python",
    "test:go": "vitest run --config tests/vitest.config.ts compiler-go.test.ts",
    "test:python": "vitest run --config tests/vitest.config.ts compiler-python.test.ts",
    "test:dart": "vitest run --config tests/vitest.config.ts compiler-dart.test.ts compiler-dart-tsparser.test.ts",
    "test:rust": "vitest run --config tests/vitest.config.ts compiler-rust.test.ts",
    "selfhost:check:rust": "bash scripts/rust-selfhost-check.sh",
    "selfhost:build:rust": "npm run selfhost:check:rust && rustc -O --edition 2021 tmp/selfhost-rust/ranger_compiler.rs -o tmp/selfhost-rust/ranger_rust && npm run selfhost:copylibs:rust",
    "selfhost:copylibs:rust": "cp ./compiler/Lang.rgr ./tmp/selfhost-rust/Lang.rgr && cp ./lib/stdops.rgr ./tmp/selfhost-rust/stdops.rgr && mkdir -p ./tmp/selfhost-rust/lib && cp ./lib/*.rgr ./tmp/selfhost-rust/lib/",
    "selfhost:run:rust": "bash scripts/rust-selfhost-run.sh",
    "selfhost:parity:rust": "bash scripts/rust-selfhost-parity.sh",
    "test:llvm": "vitest run --config tests/vitest.llvm.config.ts",
    "test:generics": "vitest run --config tests/vitest.config.ts compiler-generics.test.ts",
    "test:syntaxapp": "vitest run --config tests/vitest.syntaxapp.config.ts",
    "test:tsengine": "vitest run --config tests/vitest.tsengine.config.ts",
    "test:syntaxapp:update": "cross-env UPDATE_SYNTAX_APP_BASELINE=1 vitest run --config tests/vitest.syntaxapp.config.ts",
    "demo:native": "bash scripts/demo-native.sh",
    "demo:hello": "bash scripts/compile-hello.sh",
    "game:build:llvm": "bash scripts/compile-invaders.sh",
    "demo:wasm": "bash scripts/compile-wasm.sh",
    "demo:wasm:collections": "bash scripts/compile-wasm-collections.sh",
    "demo:wasm:serve": "bash scripts/compile-wasm.sh && node scripts/serve-wasm-demo.js",
    "compile:native": "bash scripts/compile-native.sh",
    "compile:wasm": "bash scripts/compile-wasm.sh",
    "test:runtime": "vitest run --config tests/vitest.config.ts runtime-conformance.test.ts",
    "test:tsparser": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vitest run --config tests/vitest.config.ts ts-lexer.test.ts",
    "test:watch": "vitest --config tests/vitest.config.ts",
    "gen:simple": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./generated/SimpleChessBoard.rgr -d=./generated/output -o=SimpleChessBoard.js -nodecli",
    "gen:simple:run": "npm run gen:simple && node ./generated/output/SimpleChessBoard.js",
    "gen:chess": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./generated/ChessBoard.rgr -d=./generated/output -o=ChessBoard.js -nodecli",
    "gen:chess:run": "npm run gen:chess && node ./generated/output/ChessBoard.js",
    "gen:chess:rust": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=rust ./generated/ChessBoard.rgr -d=./generated/bin -o=chessboard.rs -nodecli",
    "gen:chess:rust:build": "npm run gen:chess:rust && rustc ./generated/bin/chessboard.rs -o ./generated/bin/chessboard.exe",
    "gen:chess:rust:run": "npm run gen:chess:rust:build && ./generated/bin/chessboard.exe",
    "gen:chess:swift": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=swift3 ./generated/ChessBoard.rgr -d=./generated/bin -o=chessboard.swift -nodecli",
    "gen:all": "npm run gen:simple && npm run gen:chess",
    "gen:test": "npm run gen:simple:run",
    "game:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/invaders/invaders.rgr -d=./gallery/invaders -o=invaders.js -nodecli",
    "game:compile:rust": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=rust ./gallery/invaders/invaders.rgr -d=./gallery/invaders -o=invaders.rs -nodecli",
    "game:compile:go": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=go ./gallery/invaders/invaders.rgr -d=./gallery/invaders -o=invaders.go -nodecli",
    "game:compile:swift": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=swift6 ./gallery/invaders/invaders.rgr -d=./gallery/invaders -o=invaders.swift -nodecli",
    "game:compile:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=cpp ./gallery/invaders/invaders.rgr -d=./gallery/invaders -o=invaders.cpp -nodecli",
    "game:compile:kotlin": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=kotlin ./gallery/invaders/invaders.rgr -d=./gallery/invaders -o=invaders.kt -nodecli",
    "game:compile:python": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=python ./gallery/invaders/invaders.rgr -d=./gallery/invaders -o=invaders.py -nodecli",
    "game:build:rust": "npm run game:compile:rust && rustc gallery/invaders/invaders.rs -o gallery/invaders/invaders_rust.exe",
    "game:build:go": "npm run game:compile:go && cd gallery/invaders && go build -o invaders_go.exe invaders.go",
    "game:build:swift": "npm run game:compile:swift && swiftc -parse-as-library gallery/invaders/invaders.swift -o gallery/invaders/invaders_swift.exe",
    "game:build:cpp": "npm run game:compile:cpp && g++ -std=c++17 -pthread gallery/invaders/invaders.cpp -o gallery/invaders/invaders_cpp.exe",
    "game:build:kotlin": "npm run game:compile:kotlin && kotlinc gallery/invaders/invaders.kt -include-runtime -d gallery/invaders/invaders.jar",
    "game:build:all": "npm run game:compile && npm run game:build:rust && npm run game:build:go",
    "game:run": "node ./gallery/invaders/invaders.js",
    "game:run:rust": "./gallery/invaders/invaders_rust.exe",
    "game:run:go": "./gallery/invaders/invaders_go.exe",
    "game:run:swift": "./gallery/invaders/invaders_swift.exe",
    "game:run:cpp": "./gallery/invaders/invaders_cpp.exe",
    "game:run:kotlin": "java -jar ./gallery/invaders/invaders.jar",
    "game": "npm run game:compile && npm run game:run",
    "engine:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ranger_games/pong.rgr -d=./gallery/game_engine/ranger_games -o=pong.js -nodecli",
    "engine:compile:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=cpp ./gallery/game_engine/ranger_games/pong.rgr -d=./gallery/game_engine/ranger_games -o=pong.cpp -nodecli",
    "engine:compile:rust": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=rust ./gallery/game_engine/ranger_games/pong.rgr -d=./gallery/game_engine/ranger_games -o=pong.rs -nodecli",
    "engine:build:native": "bash gallery/game_engine/scripts/build-native.sh",
    "build:raspberry": "bash gallery/game_engine/scripts/build-raspberry.sh",
    "deploy:pi": "bash gallery/game_engine/scripts/deploy-pi.sh",
    "engine:run": "node ./gallery/game_engine/ranger_games/pong.js",
    "engine:ui:demo": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ui/ui_editor_demo.rgr -d=./gallery/game_engine/ui -o=ui_editor_demo.js -nodecli && node ./gallery/game_engine/ui/ui_editor_demo.js",
    "engine:ui:test": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ui/tests/UITest.rgr -d=./gallery/game_engine/ui/tests -o=UITest.js -nodecli && node ./gallery/game_engine/ui/tests/UITest.js",
    "markdown:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/markdown/tests/MarkdownTest.rgr -d=./gallery/markdown/bin -o=MarkdownTest.js -nodecli && node ./gallery/markdown/bin/MarkdownTest.js",
    "markdown:test:go": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=go ./gallery/markdown/tests/MarkdownTest.rgr -d=./gallery/markdown/bin -o=MarkdownTest.go -nodecli && cd gallery/markdown/bin && go run MarkdownTest.go",
    "markdown:test:python": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=python ./gallery/markdown/tests/MarkdownTest.rgr -d=./gallery/markdown/bin -o=MarkdownTest.py -nodecli && python3 ./gallery/markdown/bin/MarkdownTest.py",
    "markdown:spec:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/markdown/tests/MdSpecDump.rgr -d=./gallery/markdown/bin -o=MdSpecDump.js -nodecli",
    "markdown:spec": "npm run --silent markdown:spec:build && node gallery/markdown/tools/markdown-parity.mjs",
    "markdown:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/markdown/src/md_demo.rgr -d=./gallery/markdown/bin -o=md_demo.js -nodecli",
    "markdown:demo": "npm run --silent markdown:build && node ./gallery/markdown/bin/md_demo.js gallery/markdown/fixtures/sample.md gallery/markdown/out && node ./gallery/markdown/bin/md_demo.js gallery/markdown/fixtures/mermaid.md gallery/markdown/out && node ./gallery/markdown/bin/md_demo.js gallery/markdown/fixtures/code.md gallery/markdown/out && node ./gallery/markdown/bin/md_demo.js gallery/markdown/fixtures/paged.md gallery/markdown/out && node ./gallery/markdown/bin/md_demo.js README.md gallery/markdown/out",
    "markdown:pdf": "npm run --silent markdown:build && node ./gallery/markdown/bin/md_demo.js",
    "markdown:embed": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/markdown/tests/MdEmbedProbe.rgr -d=./gallery/markdown/bin -o=MdEmbedProbe.js -nodecli && node ./gallery/markdown/bin/MdEmbedProbe.js gallery/markdown/fixtures/mermaid.md 820",
    "markdown:docx:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdDocxTest.rgr ./gallery/markdown/bin MdDocxTest.js",
    "vfs:test": "bash scripts/rgr-suite.sh ./gallery/vfs/tests/VfsTest.rgr ./gallery/vfs/bin VfsTest.js",
    "deck": "bash scripts/rgr-suite.sh ./gallery/markdown/src/md_deck_tool.rgr ./gallery/markdown/bin md_deck_tool.js",
    "markdown:web": "bash gallery/markdown/web/standalone/build.sh",
    "markdown:web:serve": "bash gallery/markdown/web/standalone/build.sh && python3 -m http.server -d gallery/markdown/web/standalone/dist 8008",
    "markdown:web:test": "bash gallery/markdown/web/standalone/build.sh && node gallery/markdown/web/standalone/smoke.mjs",
    "r5:web": "bash gallery/r5/web/build.sh",
    "r5:web:serve": "bash gallery/r5/web/build.sh && python3 -m http.server -d gallery/r5/web/dist 8009",
    "r5:web:test": "bash gallery/r5/web/build.sh && node gallery/r5/web/smoke.mjs",
    "markdown:semantic:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdSemanticTest.rgr ./gallery/markdown/bin MdSemanticTest.js",
    "markdown:attrs:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdAttrsTest.rgr ./gallery/markdown/bin MdAttrsTest.js",
    "markdown:css:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdCssTest.rgr ./gallery/markdown/bin MdCssTest.js",
    "markdown:edit:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdEditTest.rgr ./gallery/markdown/bin MdEditTest.js",
    "markdown:vega:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdVegaTest.rgr ./gallery/markdown/bin MdVegaTest.js",
    "markdown:pptx:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdPptxTest.rgr ./gallery/markdown/bin MdPptxTest.js",
    "markdown:slides:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdSlidesTest.rgr ./gallery/markdown/bin MdSlidesTest.js",
    "markdown:srcmap:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/markdown/tests/MdSrcMapProbe.rgr -d=./gallery/markdown/bin -o=MdSrcMapProbe.js -nodecli",
    "markdown:srcmap:spec": "npm run --silent markdown:srcmap:build && node gallery/markdown/tools/markdown-srcmap.mjs",
    "markdown:srcmap:test": "bash scripts/rgr-suite.sh ./gallery/markdown/tests/MdSrcMapTest.rgr ./gallery/markdown/bin MdSrcMapTest.js",
    "markdown:bench": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/markdown/bench/md_bench.rgr -d=./gallery/markdown/bin -o=md_bench.js -nodecli && node ./gallery/markdown/bin/md_bench.js",
    "markdown:entities": "npm --prefix gallery/markdown/harness install --silent --no-audit --no-fund && node gallery/markdown/tools/gen-entities.mjs",
    "text_editor:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/text_editor/tests/EditorTest.rgr -d=./gallery/text_editor/bin -o=EditorTest.js -nodecli && node ./gallery/text_editor/bin/EditorTest.js",
    "text_editor:demo": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/text_editor/src/editor_demo.rgr -d=./gallery/text_editor/bin -o=editor_demo.js -nodecli && node ./gallery/text_editor/bin/editor_demo.js",
    "text_editor:bench": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/text_editor/bench/editor_bench.rgr -d=./gallery/text_editor/bin -o=editor_bench.js -nodecli && node ./gallery/text_editor/bin/editor_bench.js",
    "text_editor:module": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/text_editor/src/EditorApp.rgr -d=./gallery/text_editor/bin -o=editor_app_module.cjs",
    "text_editor:compare": "npm run text_editor:module && npm --prefix gallery/text_editor/bench/compare install && node gallery/text_editor/bench/compare/run.mjs",
    "text_editor:window": "npm run text_editor:module && node gallery/text_editor/web/serve.mjs --open",
    "text_editor:window:smoke": "npm run text_editor:module && node gallery/text_editor/web/serve.mjs --headless-smoke",
    "pptx:fixtures": "python3 gallery/pptx/tools/make_fixtures.py",
    "pptx:shapes:sheet": "bash scripts/rgr-suite.sh ./gallery/pptx/src/pptx_shape_sheet.rgr ./gallery/pptx/bin pptx_shape_sheet.js",
    "pptx:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxTest.rgr ./gallery/pptx/bin PptxTest.js",
    "pptx:geom:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxGeomTest.rgr ./gallery/pptx/bin PptxGeomTest.js",
    "pptx:text:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxTextEditTest.rgr ./gallery/pptx/bin PptxTextEditTest.js",
    "pptx:editor:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxEditorTest.rgr ./gallery/pptx/bin PptxEditorTest.js",
    "pptx:frame:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxFrameTest.rgr ./gallery/pptx/bin PptxFrameTest.js",
    "pptx:writer:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxWriterTest.rgr ./gallery/pptx/bin PptxWriterTest.js",
    "pptx:textbox:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxTextBoxTest.rgr ./gallery/pptx/bin PptxTextBoxTest.js",
    "pptx:box:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxBoxGeometryTest.rgr ./gallery/pptx/bin PptxBoxGeometryTest.js",
    "pptx:outline:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxOutlineTest.rgr ./gallery/pptx/bin PptxOutlineTest.js",
    "pptx:rotate:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxRotateTest.rgr ./gallery/pptx/bin PptxRotateTest.js",
    "pptx:editor:host:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxEditHostTest.rgr ./gallery/pptx/bin PptxEditHostTest.js",
    "pptx:a11y:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxA11yTest.rgr ./gallery/pptx/bin PptxA11yTest.js",
    "pptx:api:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxApiTest.rgr ./gallery/pptx/bin PptxApiTest.js",
    "css:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/css/tests/CssCoreTest.rgr -d=./gallery/css/bin -o=CssCoreTest.js -nodecli && node ./gallery/css/bin/CssCoreTest.js",
    "pptx:css:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxCssTest.rgr ./gallery/pptx/bin PptxCssTest.js",
    "pptx:chrome:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxChromeTest.rgr ./gallery/pptx/bin PptxChromeTest.js",
    "pptx:evg:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxFromEvgTest.rgr ./gallery/pptx/bin PptxFromEvgTest.js",
    "pptx:vega:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxVegaTest.rgr ./gallery/pptx/bin PptxVegaTest.js",
    "pptx:api:render:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxRenderApiTest.rgr ./gallery/pptx/bin PptxRenderApiTest.js",
    "pptx:api:build": "bash gallery/pptx/api/js/build.sh",
    "pptx:api:js:test": "bash gallery/pptx/api/js/build.sh && node gallery/pptx/api/js/test.mjs",
    "pptx:web": "bash gallery/pptx/web/standalone/build.sh",
    "pptx:html": "bash gallery/pptx/web/html/build.sh",
    "pptx:html:serve": "bash gallery/pptx/web/html/build.sh && python3 -m http.server -d gallery/pptx/web/html/dist 8006",
    "pptx:html:test": "bash gallery/pptx/web/html/build.sh && node gallery/pptx/web/html/smoke.mjs",
    "pptx:html:parity": "bash gallery/pptx/web/html/build.sh && node gallery/pptx/web/html/parity.mjs",
    "pptx:web:serve": "bash gallery/pptx/web/standalone/build.sh && python3 -m http.server -d gallery/pptx/web/standalone/dist 8001",
    "pptx:web:test": "bash gallery/pptx/web/standalone/build.sh && node gallery/pptx/web/standalone/smoke.mjs",
    "pptx:scene:check": "bash gallery/pptx/web/standalone/build.sh && node gallery/pptx/web/host/scene-binary-check.mjs",
    "pptx:web:touch:test": "bash gallery/pptx/web/standalone/build.sh && node gallery/pptx/web/standalone/touch.mjs",
    "pptx:cpp:check": "bash gallery/pptx/web/wasm/cpp-check.sh",
    "pptx:wasm": "bash gallery/pptx/web/wasm/build.sh",
    "pptx:wasm:rust": "bash gallery/pptx/web/wasm-rust/build.sh",
    "pptx:wasm:rust:serve": "bash gallery/pptx/web/wasm-rust/build.sh && python3 -m http.server -d gallery/pptx/web/wasm-rust/dist 8005",
    "pptx:wasm:rust:test": "bash gallery/pptx/web/wasm-rust/build.sh && node gallery/pptx/web/standalone/smoke.mjs --dist gallery/pptx/web/wasm-rust/dist --engine pptx_wasm.wasm --build-cmd \"npm run pptx:wasm:rust\" --port 8882",
    "pptx:wasm:rust:parity": "bash gallery/pptx/web/wasm-rust/build.sh && bash gallery/pptx/web/standalone/build.sh && node gallery/pptx/web/wasm-rust/parity.mjs",
    "pptx:wasm:serve": "bash gallery/pptx/web/wasm/build.sh && python3 -m http.server -d gallery/pptx/web/wasm/dist 8004",
    "pptx:wasm:test": "bash gallery/pptx/web/wasm/build.sh && node gallery/pptx/web/standalone/smoke.mjs --dist gallery/pptx/web/wasm/dist --engine pptx_wasm.wasm --build-cmd \"npm run pptx:wasm\" --port 8879",
    "pptx:wasm:parity": "bash gallery/pptx/web/wasm/build.sh && bash gallery/pptx/api/js/build.sh && node gallery/pptx/web/wasm/parity.mjs",
    "pptx:bridge:test": "bash gallery/pptx/web/standalone/build.sh && bash gallery/pptx/api/js/build.sh && node gallery/pptx/web/bridge.mjs",
    "pptx:scene:bench": "bash gallery/pptx/api/js/build.sh && node gallery/pptx/tools/chart_deck.mjs && bash scripts/rgr-suite.sh ./gallery/pptx/tools/scene_bench.rgr ./gallery/pptx/bin scene_bench.js",
    "pptx:playground": "bash gallery/pptx/web/playground/build.sh",
    "pptx:playground:serve": "bash gallery/pptx/web/playground/build.sh && python3 -m http.server -d gallery/pptx/web/playground/dist 8003",
    "pptx:playground:test": "bash gallery/pptx/web/playground/build.sh && node gallery/pptx/web/playground/smoke.mjs",
    "pptx:demo": "bash scripts/rgr-suite.sh ./gallery/pptx/src/pptx_demo.rgr ./gallery/pptx/bin pptx_demo.js",
    "pptx:module": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/pptx/src/PptxApp.rgr -d=./gallery/pptx/bin -o=pptx_app_module.cjs",
    "pptx:editor:shots": "bash scripts/rgr-suite.sh ./gallery/pptx/src/pptx_editor_shots.rgr ./gallery/pptx/bin pptx_editor_shots.js",
    "pptx:writer:visual": "bash scripts/rgr-suite.sh ./gallery/pptx/src/pptx_write_visual.rgr ./gallery/pptx/bin pptx_write_visual.js",
    "pptx:writer:verify": "npm run pptx:writer:test && python3 gallery/pptx/harness/verify_written.py",
    "pptx:probe": "bash scripts/rgr-suite.sh ./gallery/pptx/tools/pptx_probe.rgr ./gallery/pptx/bin pptx_probe.js",
    "pptx:audit": "bash scripts/rgr-suite.sh ./gallery/pptx/tools/pptx_audit.rgr ./gallery/pptx/bin pptx_audit.js",
    "pptx:audit:check": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/pptx/tools/pptx_audit.rgr -d=./gallery/pptx/bin -o=pptx_audit.js -nodecli && node ./gallery/pptx/bin/pptx_audit.js --check",
    "pptx:bench": "bash scripts/rgr-suite.sh ./gallery/pptx/bench/pptx_bench.rgr ./gallery/pptx/bin pptx_bench.js",
    "pptx:harness": "npm run pptx:fixtures && npm run pptx:module && node gallery/pptx/harness/run.mjs",
    "pptx:harness:quick": "node gallery/pptx/harness/run.mjs",
    "pptx:oracles": "npm run pptx:module && node gallery/pptx/harness/run_oracles.mjs --mae-limit 50",
    "pptx:oracles:visual": "npm run pptx:module && node gallery/pptx/harness/run_oracles.mjs --strict-visual --mae-limit 50",
    "pptx:window": "npm run pptx:module && node gallery/pptx/web/serve.mjs --open",
    "pptx:window:smoke": "npm run pptx:module && node gallery/pptx/web/serve.mjs --headless-smoke",
    "pptx:android": "bash gallery/pptx/android/scripts/build-app.sh debug",
    "pptx:android:ranger": "bash gallery/pptx/android/scripts/build-ranger.sh",
    "pptx:android:assets": "bash gallery/pptx/android/scripts/prepare-assets.sh",
    "pptx:android:verify": "bash gallery/pptx/android/scripts/verify-desktop.sh",
    "pptx:android:run": "bash gallery/pptx/android/scripts/run-emulator.sh",
    "pptx:android:typecheck": "bash gallery/pptx/android/scripts/typecheck-host.sh",
    "rangerflow:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerflow/tests/RangerFlowTest.rgr -d=./gallery/rangerflow/bin -o=RangerFlowTest.js -nodecli && node ./gallery/rangerflow/bin/RangerFlowTest.js",
    "rangerflow:doc:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerflow/tests/FlowDocumentTest.rgr -d=./gallery/rangerflow/bin -o=FlowDocumentTest.js -nodecli && node ./gallery/rangerflow/bin/FlowDocumentTest.js",
    "rangerflow:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerflow/demo/rangerflow_demo.rgr -d=./gallery/rangerflow/bin -o=rangerflow_demo.js -nodecli",
    "rangerflow:demo": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js",
    "rangerflow:uml": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --uml",
    "codegraph": "bash scripts/rgr-suite.sh ./gallery/codegraph/demo/codegraph_demo.rgr ./gallery/codegraph/bin codegraph_demo.js",
    "codegraph:test": "bash scripts/rgr-suite.sh ./gallery/codegraph/tests/CodeGraphTest.rgr ./gallery/codegraph/bin CodeGraphTest.js",
    "codegraph:builder": "bash scripts/rgr-suite.sh ./gallery/codegraph/tests/CodeGraphBuilderTest.rgr ./gallery/codegraph/bin CodeGraphBuilderTest.js",
    "codegraph:analyze": "node gallery/codegraph/tools/codegraph_open.mjs",
    "codegraph:bench": "bash gallery/codegraph/bench/run.sh js",
    "codegraph:bench:rt": "bash gallery/codegraph/bench/run.sh js gallery/realtrainer/src/RealTrainerDemo.rgr",
    "codegraph:bench:cpp": "bash gallery/codegraph/bench/run.sh cpp",
    "codegraph:bench:cpp:rt": "bash gallery/codegraph/bench/run.sh cpp gallery/realtrainer/src/RealTrainerDemo.rgr",
    "codegraph:web": "bash gallery/codegraph/web/standalone/build.sh",
    "codegraph:web:serve": "bash gallery/codegraph/web/standalone/build.sh && python3 -m http.server -d gallery/codegraph/web/standalone/dist 8081",
    "codegraph:web:test": "bash gallery/codegraph/web/standalone/build.sh && node gallery/codegraph/web/standalone/smoke.mjs",
    "codegraph:app": "bash scripts/rgr-suite.sh ./gallery/codegraph/tests/CodeGraphAppTest.rgr ./gallery/codegraph/bin CodeGraphAppTest.js",
    "codegraph:sdl": "bash gallery/codegraph/platform/sdl/build.sh",
    "codegraph:sdl:run": "bash gallery/codegraph/platform/sdl/build.sh --run",
    "codegraph:sdl:smoke": "bash gallery/codegraph/platform/sdl/build.sh && SDL_VIDEODRIVER=dummy ./tmp/codegraph-sdl/codegraph_sdl --frames 20",
    "uast:test": "bash scripts/rgr-suite.sh ./gallery/uast/tests/UastTest.rgr ./gallery/uast/bin UastTest.js",
    "uast:ranger": "bash scripts/rgr-suite.sh ./gallery/uast/tests/UastRangerTest.rgr ./gallery/uast/bin UastRangerTest.js",
    "uast:ts": "bash scripts/rgr-suite.sh ./gallery/uast/tests/UastTsTest.rgr ./gallery/uast/bin UastTsTest.js",
    "uast:cpp": "bash scripts/rgr-suite.sh ./gallery/uast/tests/UastCppTest.rgr ./gallery/uast/bin UastCppTest.js",
    "uast:analyze": "bash scripts/rgr-suite.sh ./gallery/uast/tools/UastAnalyze.rgr ./gallery/uast/bin UastAnalyze.js",
    "rangerflow:force": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --force",
    "rangerflow:drag": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --drag",
    "rangerflow:flowchart": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --flowchart",
    "rangerflow:mermaid": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --mermaid",
    "rangerflow:plantuml": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --plantuml",
    "rangerflow:d2": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --d2",
    "rangerflow:plantuml:oracle": "node gallery/rangerflow/harness/oracles/plantuml_oracle.mjs",
    "rangerflow:plantuml:dump": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerflow/tests/PlantUmlParityDump.rgr -d=./gallery/rangerflow/bin -o=PlantUmlParityDump.js -nodecli && node ./gallery/rangerflow/bin/PlantUmlParityDump.js gallery/rangerflow/fixtures/plantuml/*.puml $(node -e \"const f='gallery/rangerflow/harness/out/plantuml.json';const fs=require('fs');const o=fs.existsSync(f)?JSON.parse(fs.readFileSync(f,'utf8')):{};const t=['@startuml','@startmindmap','@startwbs','@startgantt','@startjson','@startyaml','@starthcl','@startsalt','@startwire','@startebnf','@startregex','@startchen','@startboard','@startfiles','@startditaa','@startdot','@startmath','@startlatex','@startcreole','@startchronology'];process.stdout.write(t.map(x=>'--opener='+x).join(' '))\")",
    "rangerflow:plantuml:parity": "npm run --silent rangerflow:plantuml:oracle || echo '  (no PlantUML: the oracle could not be built — nothing to compare against)'; npm run --silent rangerflow:plantuml:dump && node gallery/rangerflow/tools/plantuml-parity.mjs",
    "rangerflow:mermaid:oracle": "cd gallery/rangerflow/harness && { [ -d node_modules ] || npm install --silent --no-audit --no-fund; } && cd ../../.. && node gallery/rangerflow/harness/oracles/mermaid_oracle.mjs",
    "rangerflow:mermaid:dump": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerflow/tests/MermaidParityDump.rgr -d=./gallery/rangerflow/bin -o=MermaidParityDump.js -nodecli && node ./gallery/rangerflow/bin/MermaidParityDump.js gallery/rangerflow/fixtures/mermaid/*.mmd $(node -e \"const f='gallery/rangerflow/harness/out/mermaid.json';const t=require('fs').existsSync(f)?(JSON.parse(require('fs').readFileSync(f,'utf8')).types||[]):[];process.stdout.write(t.map(x=>'--header='+x.header).join(' '))\")",
    "rangerflow:mermaid:parity": "npm run --silent rangerflow:mermaid:oracle || echo '  (no registry: Mermaid could not be installed — nothing to compare against)'; npm run --silent rangerflow:mermaid:dump && node gallery/rangerflow/tools/mermaid-parity.mjs",
    "rangerflow:graphviz:bench": "cd gallery/rangerflow/harness && { [ -d node_modules ] || npm install --silent --no-audit --no-fund; } && cd ../../.. && node gallery/rangerflow/tools/graphviz-bench.mjs",
    "rangerflow:graphviz": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --graphviz",
    "rangerflow:graphviz:oracle": "cd gallery/rangerflow/harness && { [ -d node_modules ] || npm install --silent --no-audit --no-fund; } && cd ../../.. && node gallery/rangerflow/harness/oracles/graphviz_oracle.mjs",
    "rangerflow:graphviz:dump": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerflow/tests/DotParityDump.rgr -d=./gallery/rangerflow/bin -o=DotParityDump.js -nodecli && node ./gallery/rangerflow/bin/DotParityDump.js gallery/rangerflow/fixtures/graphviz/*.gv gallery/rangerflow/fixtures/graphviz/bad/*.gv",
    "rangerflow:graphviz:parity": "npm run --silent rangerflow:graphviz:oracle || echo '  (no Graphviz: the oracle could not be built — nothing to compare against)'; npm run --silent rangerflow:graphviz:dump && node gallery/rangerflow/tools/graphviz-parity.mjs",
    "rangerflow:graphviz:colors": "cd gallery/rangerflow/harness && { [ -d node_modules ] || npm install --silent --no-audit --no-fund; } && cd ../../.. && node gallery/rangerflow/tools/graphviz-colors.mjs",
    "rangerflow:d2:oracle": "node gallery/rangerflow/harness/oracles/d2_oracle.mjs",
    "rangerflow:d2:dump": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerflow/tests/D2ParityDump.rgr -d=./gallery/rangerflow/bin -o=D2ParityDump.js -nodecli && node ./gallery/rangerflow/bin/D2ParityDump.js gallery/rangerflow/fixtures/d2/*.d2",
    "rangerflow:d2:parity": "npm run --silent rangerflow:d2:oracle || echo '  (no go toolchain: the D2 oracle could not be built — nothing to compare against)'; npm run --silent rangerflow:d2:dump && node gallery/rangerflow/tools/d2-parity.mjs",
    "rangerflow:org": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --org",
    "rangerflow:process": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --process",
    "rangerflow:quality": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --quality gallery/rangerflow/fixtures/*.mmd gallery/rangerflow/fixtures/mermaid/*.mmd",
    "rangerflow:bench": "npm run rangerflow:build && node ./gallery/rangerflow/bin/rangerflow_demo.js --bench",
    "rangerflow:sdl": "bash gallery/rangerflow/platform/sdl/build.sh",
    "rangerflow:sdl:run": "bash gallery/rangerflow/platform/sdl/build.sh --run gallery/rangerflow/fixtures/ecommerce.sql",
    "rangerflow:sdl:smoke": "bash gallery/rangerflow/platform/sdl/build.sh && SDL_VIDEODRIVER=dummy ./tmp/rangerflow-sdl/rangerflow_sdl gallery/rangerflow/fixtures/ecommerce.sql 30",
    "rangerflow:parity:oracles": "cd gallery/rangerflow/harness && { [ -d node_modules ] || npm install --silent --no-audit --no-fund; } && cd ../../.. && node gallery/rangerflow/harness/oracles/reactflow_oracle.mjs && node gallery/rangerflow/harness/oracles/d3_force_oracle.mjs",
    "rangerflow:parity:dump": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerflow/tests/ParityDump.rgr -d=./gallery/rangerflow/bin -o=ParityDump.js -nodecli && node ./gallery/rangerflow/bin/ParityDump.js",
    "rangerflow:parity": "npm run --silent rangerflow:parity:oracles || echo '  (no registry: the geometry oracles could not be built — scoring what is measurable)'; npm run --silent rangerflow:parity:dump && node gallery/rangerflow/tools/parity.mjs",
    "rangerflow:rivals": "npm run --silent rangerflow:parity:dump && node gallery/rangerflow/tools/rivals.mjs",
    "rangerflow:web": "bash gallery/rangerflow/web/standalone/build.sh",
    "rangerflow:web:serve": "bash gallery/rangerflow/web/standalone/build.sh && node gallery/rangerflow/web/standalone/serve.mjs",
    "rangerflow:demo:web": "bash gallery/rangerflow/web/standalone/build.sh && node gallery/rangerflow/web/standalone/serve.mjs --open",
    "rangerflow:web:test": "bash gallery/rangerflow/web/standalone/build.sh && node gallery/rangerflow/web/standalone/smoke.mjs --all",
    "rangerflow:forge:test": "node --test gallery/rangerflow/forge/test/*.test.mjs",
    "rangerflow:artifacts": "bash gallery/rangerflow/web/standalone/build.sh && node gallery/rangerflow/web/standalone/smoke.mjs --all --shots gallery/rangerflow/artifacts && cp gallery/rangerflow/artifacts/scenario_erd.png gallery/rangerflow/artifacts/01_schema_editor_webgl.png",
    "datagrid:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/GridTest.rgr ./gallery/datagrid/bin GridTest.js",
    "rangerdb:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdb/tests/RangerDbTest.rgr -d=./gallery/rangerdb/bin -o=RangerDbTest.js -nodecli && node ./gallery/rangerdb/bin/RangerDbTest.js",
    "rangerdb:host:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdb/tests/HostDbTest.rgr -d=./gallery/rangerdb/bin -o=HostDbTest.js -nodecli && node ./gallery/rangerdb/bin/HostDbTest.js",
    "rangerdb:introspect:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdb/tests/IntrospectTest.rgr -d=./gallery/rangerdb/bin -o=IntrospectTest.js -nodecli && node ./gallery/rangerdb/bin/IntrospectTest.js",
    "rangerdb:ddl:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdb/tests/DdlSchemaTest.rgr -d=./gallery/rangerdb/bin -o=DdlSchemaTest.js -nodecli && node ./gallery/rangerdb/bin/DdlSchemaTest.js",
    "rangerforms:xform:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerforms/tests/XFormTest.rgr -d=./gallery/rangerforms/bin -o=XFormTest.js -nodecli && node ./gallery/rangerforms/bin/XFormTest.js",
    "rangerforms:engine:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerforms/tests/EngineTest.rgr -d=./gallery/rangerforms/bin -o=EngineTest.js -nodecli && node ./gallery/rangerforms/bin/EngineTest.js",
    "rangerforms:timings": "npm run rangerforms:bench:build && node gallery/rangerforms/bench/timings.mjs",
    "rangerforms:xforms:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/rangerforms/bench/XFormBench.rgr -d=./gallery/rangerforms/bin -o=xform_bench.cjs",
    "rangerforms:xforms": "npm run rangerforms:xforms:build && node gallery/rangerforms/bench/xforms.mjs",
    "rangerforms:corpus": "node scripts/rangerforms-corpus.mjs",
    "rangerforms:conformance": "bash scripts/rangerforms-conformance.sh",
    "rangerforms:bench:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/rangerforms/bench/BenchRunner.rgr -d=./gallery/rangerforms/bin -o=bench_runner.cjs",
    "rangerforms:bench": "npm run rangerforms:bench:build && node gallery/rangerforms/bench/bench.mjs",
    "rangerforms:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerforms/tests/FormsTest.rgr -d=./gallery/rangerforms/bin -o=FormsTest.js -nodecli && node ./gallery/rangerforms/bin/FormsTest.js",
    "ui:calendar:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/ui/tests/CalendarTest.rgr -d=./gallery/ui/bin -o=CalendarTest.js -nodecli && node ./gallery/ui/bin/CalendarTest.js",
    "ui:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/ui/tests/UiTest.rgr -d=./gallery/ui/bin -o=UiTest.js -nodecli && node ./gallery/ui/bin/UiTest.js",
    "ui:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/src/UiHost.rgr -d=./gallery/ui/bin -o=ui_host.cjs",
    "ui:trace": "npm run ui:build && node gallery/ui/conformance/ranger-adapter.cjs gallery/ui/conformance/specs/toggle_collapsible.json",
    "ui:conformance:install": "npm --prefix gallery/ui/conformance/dom install",
    "ui:conformance": "npm run ui:build && node gallery/ui/conformance/compare.mjs",
    "ui:report": "npm run ui:build && node gallery/ui/conformance/report.mjs",
    "ui:report:baseline": "npm run ui:build && node gallery/ui/conformance/report.mjs --update-baseline",
    "ui:a11y": "npm run ui:build && node gallery/ui/conformance/a11y.mjs",
    "ui:inventory": "node gallery/ui/conformance/inventory.mjs",
    "ui:inventory:refresh": "node gallery/ui/conformance/inventory.mjs --refresh",
    "ui:web:build": "npm run ui:build && node gallery/ui/web/build.mjs",
    "ui:web": "npm run ui:web:build && npm run ui:demo:build && node gallery/ui/demo/build.mjs && node gallery/ui/web/serve.mjs",
    "rangerdbviewer:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdbviewer/tests/DbViewerTest.rgr -d=./gallery/rangerdbviewer/bin -o=DbViewerTest.js -nodecli && node ./gallery/rangerdbviewer/bin/DbViewerTest.js",
    "rangerdbviewer:migrations:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdbviewer/tests/MigrationTest.rgr -d=./gallery/rangerdbviewer/bin -o=MigrationTest.js -nodecli && node ./gallery/rangerdbviewer/bin/MigrationTest.js",
    "rangerdbviewer:query:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdbviewer/tests/QueryTest.rgr -d=./gallery/rangerdbviewer/bin -o=QueryTest.js -nodecli && node ./gallery/rangerdbviewer/bin/QueryTest.js",
    "rangerdbviewer:forms:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdbviewer/tests/RecordFormTest.rgr -d=./gallery/rangerdbviewer/bin -o=RecordFormTest.js -nodecli && node ./gallery/rangerdbviewer/bin/RecordFormTest.js",
    "rangerdbviewer:sheet:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdbviewer/tests/SheetTest.rgr -d=./gallery/rangerdbviewer/bin -o=SheetTest.js -nodecli && node ./gallery/rangerdbviewer/bin/SheetTest.js",
    "rangerdbviewer:metrics:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdbviewer/tests/MetricsTest.rgr -d=./gallery/rangerdbviewer/bin -o=MetricsTest.js -nodecli && node ./gallery/rangerdbviewer/bin/MetricsTest.js",
    "rangerdbviewer:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdbviewer/demo/dbviewer_demo.rgr -d=./gallery/rangerdbviewer/bin -o=dbviewer_demo.js -nodecli",
    "rangerdbviewer:demo": "npm run rangerdbviewer:build && node ./gallery/rangerdbviewer/bin/dbviewer_demo.js",
    "rangerdbviewer:demo:all": "npm run rangerdbviewer:build && node ./gallery/rangerdbviewer/bin/dbviewer_demo.js --all",
    "rangerdbviewer:web": "bash gallery/rangerdbviewer/web/standalone/build.sh",
    "rangerdbviewer:web:serve": "bash gallery/rangerdbviewer/web/standalone/build.sh && python3 -m http.server -d gallery/rangerdbviewer/web/standalone/dist 8080",
    "rangerdbviewer:web:test": "bash gallery/rangerdbviewer/web/standalone/build.sh && node gallery/rangerdbviewer/web/standalone/smoke.mjs",
    "graphql:test": "bash scripts/rgr-suite.sh ./gallery/graphql/tests/GraphQLTest.rgr ./gallery/graphql/bin GraphQLTest.js",
    "rangersql:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangersql/tests/RangerSqlTest.rgr -d=./gallery/rangersql/bin -o=RangerSqlTest.js -nodecli && node ./gallery/rangersql/bin/RangerSqlTest.js",
    "rangersql:identity": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangersql/tests/IdentityTest.rgr -d=./gallery/rangersql/bin -o=IdentityTest.js -nodecli && node ./gallery/rangersql/bin/IdentityTest.js",
    "rangersql:oracle": "npm run rangersql:identity && python3 gallery/rangersql/tools/sqlglot_oracle.py",
    "rangerdb:bench": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rangerdb/bench/db_bench.rgr -d=./gallery/rangerdb/bin -o=db_bench.js -nodecli && node ./gallery/rangerdb/bin/db_bench.js",
    "datagrid:pane:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/GridPaneTest.rgr ./gallery/datagrid/bin GridPaneTest.js",
    "datagrid:db:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/GridDbTest.rgr ./gallery/datagrid/bin GridDbTest.js",
    "datagrid:db:demo": "bash scripts/rgr-suite.sh ./gallery/datagrid/src/db_demo.rgr ./gallery/datagrid/bin db_demo.js",
    "datagrid:textfit:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/GridTextFitTest.rgr ./gallery/datagrid/bin GridTextFitTest.js",
    "datagrid:db:module": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/datagrid/src/db_app.rgr -d=./gallery/datagrid/bin -o=grid_db_module.cjs",
    "datagrid:db:window": "npm run datagrid:db:module && node gallery/datagrid/web/serve.mjs --open --db ${RANGERDB_ENGINE:-auto}",
    "datagrid:db:window:sqlite": "npm run datagrid:db:module && node gallery/datagrid/web/serve.mjs --open --db sqlite",
    "datagrid:db:window:rangerdb": "npm run datagrid:db:module && node gallery/datagrid/web/serve.mjs --open --db rangerdb",
    "datagrid:db:window:smoke": "npm run datagrid:db:module && node gallery/datagrid/web/db_smoke.mjs --db ${RANGERDB_ENGINE:-auto}",
    "datagrid:demo": "bash scripts/rgr-suite.sh ./gallery/datagrid/src/grid_demo.rgr ./gallery/datagrid/bin grid_demo.js",
    "datagrid:bench": "bash scripts/rgr-suite.sh ./gallery/datagrid/bench/grid_bench.rgr ./gallery/datagrid/bin grid_bench.js",
    "datagrid:module": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/datagrid/src/GridApp.rgr -d=./gallery/datagrid/bin -o=grid_app_module.cjs",
    "datagrid:window": "npm run datagrid:module && node gallery/datagrid/web/serve.mjs --open",
    "datagrid:window:sales": "npm run datagrid:module && node gallery/datagrid/web/serve.mjs --open --xlsx gallery/datagrid/fixtures/sales.xlsx",
    "datagrid:web": "bash gallery/datagrid/web/standalone/build.sh",
    "datagrid:web:serve": "bash gallery/datagrid/web/standalone/build.sh && python3 -m http.server -d gallery/datagrid/web/standalone/dist 8000",
    "datagrid:web:test": "bash gallery/datagrid/web/standalone/build.sh && node gallery/datagrid/web/standalone/smoke.mjs",
    "datagrid:clipboard:smoke": "npm run datagrid:module && node gallery/datagrid/web/clipboard_smoke.mjs",
    "datagrid:window:smoke": "npm run datagrid:module && node gallery/datagrid/web/serve.mjs --headless-smoke",
    "datagrid:a11y:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/GridA11yTest.rgr ./gallery/datagrid/bin GridA11yTest.js",
    "datagrid:edit:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/GridEditTest.rgr ./gallery/datagrid/bin GridEditTest.js",
    "datagrid:export:test": "mkdir -p gallery/datagrid/harness/out/export && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/tests/XlsxWriteTest.rgr -d=./gallery/datagrid/bin -o=XlsxWriteTest.js -nodecli && node ./gallery/datagrid/bin/XlsxWriteTest.js && python3 gallery/datagrid/tools/check_export.py",
    "datagrid:preserve:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/tests/XlsxPreserveTest.rgr -d=./gallery/datagrid/bin -o=XlsxPreserveTest.js -nodecli && node ./gallery/datagrid/bin/XlsxPreserveTest.js && python3 gallery/datagrid/tools/check_preserve.py",
    "datagrid:chart:infer:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/ChartInferenceTest.rgr ./gallery/datagrid/bin ChartInferenceTest.js",
    "datagrid:sort:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/GridSortTest.rgr ./gallery/datagrid/bin GridSortTest.js",
    "datagrid:chart:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/ChartTest.rgr ./gallery/datagrid/bin ChartTest.js",
    "datagrid:render:parity": "bash gallery/datagrid/tools/run_render_parity.sh",
    "datagrid:text:test": "bash gallery/datagrid/tools/run_text_model_test.sh",
    "datagrid:gl:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/GlAtlasTest.rgr ./gallery/datagrid/bin GlAtlasTest.js",
    "datagrid:xlsx:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/XlsxTest.rgr ./gallery/datagrid/bin XlsxTest.js",
    "datagrid:xlsx:demo": "bash scripts/rgr-suite.sh ./gallery/datagrid/src/xlsx_demo.rgr ./gallery/datagrid/bin xlsx_demo.js",
    "datagrid:xlsx:fixtures": "python3 gallery/datagrid/tools/make_fixtures.py && python3 gallery/datagrid/tools/make_m4_fixtures.py && python3 gallery/datagrid/tools/make_styles_fixture.py && python3 gallery/datagrid/tools/make_annotations_fixture.py && python3 gallery/datagrid/tools/make_images_fixture.py && python3 gallery/datagrid/tools/make_shared_formula_fixture.py && python3 gallery/datagrid/tools/make_text_fixture.py && python3 gallery/datagrid/tools/make_theme_fixture.py",
    "datagrid:workbook:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/WorkbookTest.rgr ./gallery/datagrid/bin WorkbookTest.js",
    "datagrid:formula:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/FormulaFunctionsTest.rgr ./gallery/datagrid/bin FormulaFunctionsTest.js",
    "datagrid:formula:workbook:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/FormulaWorkbookTest.rgr ./gallery/datagrid/bin FormulaWorkbookTest.js",
    "datagrid:date:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/DateTest.rgr ./gallery/datagrid/bin DateTest.js",
    "datagrid:formula:array:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/FormulaArrayTest.rgr ./gallery/datagrid/bin FormulaArrayTest.js",
    "datagrid:formula:bench": "bash scripts/rgr-suite.sh ./gallery/datagrid/bench/formula_bench.rgr ./gallery/datagrid/bin formula_bench.js",
    "datagrid:artifacts": "mkdir -p gallery/datagrid/artifacts && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/src/dump_artifacts.rgr -d=./gallery/datagrid/bin -o=dump_artifacts.js -nodecli && node ./gallery/datagrid/bin/dump_artifacts.js",
    "datagrid:oracle:formula": "mkdir -p gallery/datagrid/harness/out/formulas && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/src/formula_oracle_dump.rgr -d=./gallery/datagrid/bin -o=formula_oracle_dump.js -nodecli && node ./gallery/datagrid/bin/formula_oracle_dump.js | tee /tmp/formula_oracle_dump.log | awk '/---FORMULA_VALUES---/{p=1;next} /---END---/{exit} p' > gallery/datagrid/harness/out/formulas/ranger_values.json && python3 gallery/datagrid/harness/oracles/formula_lo.py gallery/datagrid/fixtures/formulas.xlsx --ranger gallery/datagrid/harness/out/formulas/ranger_values.json --out-dir gallery/datagrid/harness/out/formulas",
    "datagrid:oracle:dump": "mkdir -p gallery/datagrid/harness/out/business && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/src/xlsx_oracle_dump.rgr -d=./gallery/datagrid/bin -o=xlsx_oracle_dump.js -nodecli && node ./gallery/datagrid/bin/xlsx_oracle_dump.js | tee /tmp/xlsx_oracle_dump.log | awk '/---INSPECT---/{p=1;next} p&&/^wrote /{exit} p' > gallery/datagrid/harness/out/business/inspect.json && test -s gallery/datagrid/harness/out/business/inspect.json",
    "datagrid:editor:web": "bash gallery/datagrid/web/editor/build.sh",
    "datagrid:editor:open": "node gallery/datagrid/web/editor/serve.mjs",
    "datagrid:editor:web:serve": "node gallery/datagrid/web/editor/serve.mjs --no-open",
    "datagrid:editor:web:test": "bash gallery/datagrid/web/editor/build.sh && node gallery/datagrid/web/editor/smoke.mjs",
    "datagrid:editor:keys:test": "bash gallery/datagrid/web/editor/build.sh && node gallery/datagrid/web/editor/keyboard.mjs",
    "datagrid:editor:compare": "bash gallery/datagrid/web/editor/build.sh && node gallery/datagrid/web/editor/compare/run.mjs",
    "datagrid:editor:compare:setup": "npm --prefix gallery/datagrid/web/editor/compare install",
    "datagrid:editor:sdl": "bash gallery/datagrid/platform/sdl/build_editor.sh",
    "datagrid:editor:sdl:cpp": "bash gallery/datagrid/platform/sdl/build_editor.sh --cpp-only",
    "datagrid:editor:sdl:smoke": "bash gallery/datagrid/platform/sdl/build_editor.sh && SDL_VIDEODRIVER=offscreen ./tmp/code-editor-sdl/code_editor_sdl 20 | tee tmp/code-editor-sdl.log && grep -q 'gl=yes' tmp/code-editor-sdl.log",
    "datagrid:editor:artifacts": "mkdir -p gallery/datagrid/artifacts && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/src/script/dump_code_editor.rgr -d=./gallery/datagrid/bin -o=dump_code_editor.js -nodecli && node ./gallery/datagrid/bin/dump_code_editor.js",
    "datagrid:script:test": "mkdir -p gallery/datagrid/harness/out/script && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/tests/GridScriptTest.rgr -d=./gallery/datagrid/bin -o=GridScriptTest.js -nodecli && node ./gallery/datagrid/bin/GridScriptTest.js",
    "datagrid:script:editor:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/ScriptEditorTest.rgr ./gallery/datagrid/bin ScriptEditorTest.js",
    "datagrid:script:smoke": "npm run datagrid:module && node gallery/datagrid/web/script_smoke.mjs",
    "datagrid:script:artifacts": "mkdir -p gallery/datagrid/artifacts gallery/datagrid/harness/out/script && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/src/dump_script_report.rgr -d=./gallery/datagrid/bin -o=dump_script_report.js -nodecli && node ./gallery/datagrid/bin/dump_script_report.js",
    "datagrid:parity": "python3 gallery/datagrid/tools/parity_score.py",
    "datagrid:oracles": "npm run datagrid:oracle:dump && npm run datagrid:oracle:formula && node gallery/datagrid/harness/run_oracles.mjs",
    "docx_viewer:chart:test": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/tests/ChartPasteTest.rgr ./gallery/docx_viewer/bin ChartPasteTest.js",
    "docx_viewer:test": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/tests/DocxTest.rgr ./gallery/docx_viewer/bin DocxTest.js",
    "docx_viewer:app:test": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/tests/DocxAppTest.rgr ./gallery/docx_viewer/bin DocxAppTest.js",
    "docx_viewer:a11y:test": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/tests/DocxA11yTest.rgr ./gallery/docx_viewer/bin DocxA11yTest.js",
    "docx_viewer:paging:test": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/tests/DocxPagingTest.rgr ./gallery/docx_viewer/bin DocxPagingTest.js",
    "docx:bench": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/bench/docx_bench.rgr ./gallery/docx_viewer/bin docx_bench.js",
    "docx:audit": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/tools/docx_audit.rgr ./gallery/docx_viewer/bin docx_audit.js",
    "docx:audit:check": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/docx_viewer/tools/docx_audit.rgr -d=./gallery/docx_viewer/bin -o=docx_audit.js -nodecli && node ./gallery/docx_viewer/bin/docx_audit.js --check",
    "docx_viewer:web": "bash gallery/docx_viewer/web/standalone/build.sh",
    "docx_viewer:web:serve": "bash gallery/docx_viewer/web/standalone/build.sh && python3 -m http.server -d gallery/docx_viewer/web/standalone/dist 8002",
    "docx_viewer:web:test": "bash gallery/docx_viewer/web/standalone/build.sh && node gallery/docx_viewer/web/standalone/smoke.mjs",
    "docx_viewer:scroll:test": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/tests/DocxScrollTest.rgr ./gallery/docx_viewer/bin DocxScrollTest.js",
    "docx_viewer:rtl:shot": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/src/docx_rtl_shot.rgr ./gallery/docx_viewer/bin docx_rtl_shot.js",
    "docx_viewer:demo": "bash scripts/rgr-suite.sh ./gallery/docx_viewer/src/docx_demo.rgr ./gallery/docx_viewer/bin docx_demo.js",
    "docx_viewer:fixtures": "python3 gallery/docx_viewer/fixtures/make_fixtures.py",
    "docx_viewer:module": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/docx_viewer/src/DocxViewer.rgr -d=./gallery/docx_viewer/bin -o=docx_viewer_module.cjs",
    "docx_viewer:window": "npm run docx_viewer:module && node gallery/docx_viewer/web/serve.mjs --open",
    "docx_viewer:oracles": "node gallery/docx_viewer/harness/run_oracles.mjs --skip-visual",
    "docx_viewer:oracles:visual": "node gallery/docx_viewer/harness/run_oracles.mjs",
    "engine:ui:wasm-select": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ui/wasm_ui_select_demo.rgr -d=./gallery/game_engine/ui -o=wasm_ui_select_demo.js -nodecli && node ./gallery/game_engine/ui/wasm_ui_select_demo.js",
    "engine:ui:wasm-guest": "bash gallery/game_engine/games/ui_menu/src/build.sh && node gallery/game_engine/games/ui_menu/src/tools/parity.cjs",
    "engine:ui:effects": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/ui_effects_demo.rgr -d=./gallery/game_engine/scripting -o=ui_effects_demo.js -nodecli && node ./gallery/game_engine/scripting/ui_effects_demo.js",
    "engine:ui:effects-guest": "bash gallery/game_engine/games/ui_effects/src/build.sh && node gallery/game_engine/games/ui_effects/src/tools/parity.cjs",
    "engine:ui:game": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/ui_menu_runner_demo.rgr -d=./gallery/game_engine/scripting -o=ui_menu_runner_demo.js -nodecli && node ./gallery/game_engine/scripting/ui_menu_runner_demo.js",
    "engine:ui:as": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/as_ui_menu_src_demo.rgr -d=./gallery/game_engine/scripting -o=as_ui_menu_src_demo.js -nodecli && node ./gallery/game_engine/scripting/as_ui_menu_src_demo.js",
    "engine:as:sprites": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/as_sprite_demo.rgr -d=./gallery/game_engine/scripting -o=as_sprite_demo.js -nodecli && node ./gallery/game_engine/scripting/as_sprite_demo.js",
    "engine:as:sprites2p": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/pyorretris2p_demo.rgr -d=./gallery/game_engine/scripting -o=pyorretris2p_demo.js -nodecli && node ./gallery/game_engine/scripting/pyorretris2p_demo.js",
    "engine:ui:anim": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ui/ui_anim_demo.rgr -d=./gallery/game_engine/ui -o=ui_anim_demo.js -nodecli && node ./gallery/game_engine/ui/ui_anim_demo.js",
    "engine:ui:anim-visual": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ui/ui_anim_visual_demo.rgr -d=./gallery/game_engine/ui -o=ui_anim_visual_demo.js -nodecli && node ./gallery/game_engine/ui/ui_anim_visual_demo.js",
    "engine:ui:bgimage": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ui/ui_bgimage_demo.rgr -d=./gallery/game_engine/ui -o=ui_bgimage_demo.js -nodecli && node ./gallery/game_engine/ui/ui_bgimage_demo.js",
    "engine:as:classes": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/tests/interp/as_class_demo.rgr -d=./gallery/game_engine/tests/interp -o=as_class_demo.js -nodecli && node ./gallery/game_engine/tests/interp/as_class_demo.js",
    "engine:catalog:categories": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/game_catalog_category_demo.rgr -d=./gallery/game_engine/scripting -o=game_catalog_category_demo.js -nodecli && node ./gallery/game_engine/scripting/game_catalog_category_demo.js",
    "engine:menu:launcher": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/menu_launcher_demo.rgr -d=./gallery/game_engine/scripting -o=menu_launcher_demo.js -nodecli && node ./gallery/game_engine/scripting/menu_launcher_demo.js",
    "engine:game:icons": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/game_icon_shots_demo.rgr -d=./gallery/game_engine/scripting -o=game_icon_shots_demo.js -nodecli && node ./gallery/game_engine/scripting/game_icon_shots_demo.js",
    "engine:ui:launcher": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ui/evg_launcher_demo.rgr -d=./gallery/game_engine/ui -o=evg_launcher_demo.js -nodecli && node ./gallery/game_engine/ui/evg_launcher_demo.js",
    "engine:compile:sdl": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=cpp ./gallery/game_engine/ranger_games/pong_sdl.rgr -d=./gallery/game_engine/ranger_games -o=pong_sdl.cpp -nodecli",
    "engine:sdl": "bash gallery/game_engine/scripts/build-sdl.sh",
    "engine:sdl:run": "bash gallery/game_engine/scripts/build-sdl.sh --run",
    "engine:v2:test": "bash gallery/game_engine/v2/tests/run.sh",
    "interp:bench": "node gallery/game_engine/v2/interp/bench/bench.cjs",
    "engine:v2:mesh:test": "bash gallery/game_engine/v2/mesh_editor/tests/run.sh",
    "engine:v2:mesh:e2e": "node gallery/game_engine/v2/mesh_editor/tests/e2e/mesh_editor_e2e.mjs",
    "engine:v2:mesh:dev": "npm --prefix gallery/game_engine/v2/mesh_editor/app run dev",
    "engine:v2:shot:ylos2": "bash gallery/game_engine/v2/tests/tools/ylos2_screenshot.sh",
    "engine:v2:pinball3d:build": "node gallery/game_engine/v2/web/build-pinball3d.mjs --out gallery/game_engine/v2/web/dist/pinball3d",
    "engine:v2:pinball3d:shot": "npm run engine:v2:pinball3d:build && node gallery/game_engine/v2/web/tests/browser_smoke.mjs gallery/game_engine/v2/web/dist/pinball3d --canvas '#screen' --ms 2000 --shot gallery/game_engine/v2/web/dist/pinball3d/pinball_gpu.png",
    "engine:v2:pages:build": "node gallery/game_engine/v2/web/build-pages.mjs --out gallery/game_engine/v2/web/dist/pages",
    "engine:v2:pages:smoke": "npm run engine:v2:pages:build && node gallery/game_engine/v2/web/tests/pages_smoke.mjs gallery/game_engine/v2/web/dist/pages",
    "engine:game-sdl": "bash gallery/game_engine/scripts/build-game-sdl.sh",
    "engine:game-sdl:run": "bash gallery/game_engine/scripts/build-game-sdl.sh --run",
    "engine:game-sdl:launcher": "bash gallery/game_engine/scripts/build-game-sdl.sh --run",
    "engine:game-sdl:launcher:v2": "bash gallery/game_engine/scripts/build-sdl-v2.sh --run",
    "engine:game-sdl:run:pong": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/pong/index.tsx",
    "engine:game-sdl:run:invaders": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/invaders/index.tsx",
    "engine:game-sdl:run:breakout": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/breakout/index.tsx",
    "engine:game-sdl:run:littleciv": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/littleciv/index.tsx",
    "engine:game-sdl:smoke:littleciv": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/littleciv/index.tsx 300",
    "engine:littleciv:runner": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/tests/littleciv_runner_demo.rgr -d=./tests/.output -o=littleciv_runner_demo.js -nodecli && node ./tests/.output/littleciv_runner_demo.js 240",
    "engine:game-sdl:run:chess": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/chess/index.tsx",
    "engine:game-sdl:smoke:chess": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/chess/index.tsx 300",
    "engine:chess:runner": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/tests/chess_runner_demo.rgr -d=./tests/.output -o=chess_runner_demo.js -nodecli && node ./tests/.output/chess_runner_demo.js 120",
    "engine:chess:assets": "bash gallery/game_engine/games/chess/build-assets.sh",
    "engine:game-sdl:run:f1_arcade": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/f1_arcade/index.tsx",
    "engine:game-sdl:smoke:f1_arcade": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/f1_arcade/index.tsx 300",
    "engine:f1_arcade:runner": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/tests/f1_arcade_runner_demo.rgr -d=./tests/.output -o=f1_arcade_runner_demo.js -nodecli && node ./tests/.output/f1_arcade_runner_demo.js 360",
    "engine:game-sdl:run:ylos": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/ylos/index.tsx",
    "engine:game-sdl:run:ylos2": "bash gallery/game_engine/scripts/build-lpc.sh --run && bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/ylos2/index.tsx",
    "engine:game-sdl:run:ylos3": "bash gallery/game_engine/scripts/build-lpc.sh --run && bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/ylos3/index.tsx",
    "engine:game-sdl:run:ylos4": "bash gallery/game_engine/scripts/build-lpc.sh --run && bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/ylos4/index.tsx",
    "engine:game-sdl:run:physics_sandbox": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/physics_sandbox/index.tsx",
    "engine:game-sdl:run:sprite": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/sprite_char/sprite_char.wasm",
    "engine:game-sdl:smoke": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/scripting/pong.game.tsx 300",
    "engine:game-sdl:smoke:invaders": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/scripting/invaders.game.tsx 300",
    "engine:game-sdl:smoke:breakout": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/scripting/breakout.game.tsx 300",
    "engine:game-sdl:smoke:pacman": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/pacman/index.tsx 300",
    "engine:game-sdl:run:pacman": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/pacman/index.tsx",
    "engine:game:watch:invaders": "node gallery/game_engine/scripts/watch-game-sdl.mjs invaders",
    "engine:game:watch:pacman": "node gallery/game_engine/scripts/watch-game-sdl.mjs pacman",
    "engine:game:watch:pong": "node gallery/game_engine/scripts/watch-game-sdl.mjs pong",
    "engine:game:watch:breakout": "node gallery/game_engine/scripts/watch-game-sdl.mjs breakout",
    "engine:lpc:build": "bash gallery/game_engine/scripts/build-lpc.sh",
    "engine:lpc:run": "bash gallery/game_engine/scripts/build-lpc.sh --run",
    "engine:lpc:batch": "bash gallery/game_engine/scripts/build-lpc-batch.sh",
    "engine:chars:bake": "bash gallery/game_engine/scripts/bake-characters.sh",
    "engine:chars:demo": "bash gallery/game_engine/scripts/build-chars-demo.sh",
    "engine:chars:guest": "bash gallery/game_engine/games/sprite_char/src/build.sh",
    "engine:chars:verify": "node gallery/game_engine/games/sprite_char/src/verify.mjs",
    "engine:chars:poc": "bash gallery/game_engine/scripts/build-chars-poc.sh",
    "engine:chars:poc:sdl": "bash gallery/game_engine/scripts/build-sprite-char-sdl.sh",
    "engine:pose:guest": "bash gallery/game_engine/games/pose_arena/src/build.sh",
    "engine:pose:verify": "node gallery/game_engine/games/pose_arena/src/verify.mjs",
    "engine:ylos2:assets": "bash gallery/game_engine/games/ylos2/build-assets.sh",
    "engine:ylos3:assets": "bash gallery/game_engine/games/ylos3/build-assets.sh",
    "engine:ylos4:assets": "bash gallery/game_engine/games/ylos4/build-assets.sh",
    "engine:pacman:assets": "bash gallery/game_engine/games/pacman/build-assets.sh",
    "engine:physics:build": "bash gallery/game_engine/scripts/build-physics.sh",
    "engine:physics:test": "bash gallery/game_engine/scripts/build-physics.sh --run",
    "engine:physics:tsx": "bash gallery/game_engine/physics/tsx/run.sh",
    "engine:physics:showcase": "RANGER_LIB=compiler/Lang.rgr:lib/stdops.rgr node bin/output.js -es6 gallery/game_engine/scripting/cannon_showcase_demo.rgr -d=gallery/game_engine/scripting -o=cannon_showcase_demo.js -nodecli && node gallery/game_engine/scripting/cannon_showcase_demo.js",
    "engine:wasm:build:rust-pong": "bash gallery/game_engine/games/rust_pong/src/build.sh",
    "engine:wasm:demo:pong": "bash gallery/game_engine/scripts/build-wasm-pong-demo.sh",
    "engine:wasm:build:cube3d": "bash gallery/game_engine/games/cube3d_wasm/src/build.sh",
    "engine:wasm:demo:cube3d": "bash gallery/game_engine/games/cube3d_wasm/src/build.sh && node gallery/game_engine/games/cube3d_wasm/tools/render.cjs 48",
    "engine:wasm:build:fps": "bash gallery/game_engine/games/fps_wasm/src/build.sh",
    "engine:wasm:demo:fps": "bash gallery/game_engine/games/fps_wasm/src/build.sh && node gallery/game_engine/games/fps_wasm/tools/render.cjs",
    "engine:wasm:build:rust-autopeli": "bash gallery/game_engine/games/autopeli_wasm/src/build.sh",
    "engine:wasm:assets:autopeli": "bash gallery/game_engine/scripts/sync-autopeli-wasm-assets.sh",
    "engine:wasm:demo:autopeli": "bash gallery/game_engine/scripts/build-wasm-autopeli-demo.sh",
    "engine:wasm:build:worker": "bash gallery/game_engine/wasm/rust_worker/build.sh",
    "engine:wasm:demo:worker": "bash gallery/game_engine/scripts/build-worker-demo.sh",
    "engine:wasm:demo:worker-spawn": "bash gallery/game_engine/scripts/build-spawn-demo.sh",
    "engine:wasm:build:loader": "bash gallery/game_engine/wasm/as_resource_loader/build.sh",
    "engine:wasm:demo:loader-poc": "bash gallery/game_engine/scripts/build-loader-poc.sh",
    "engine:wasm:demo:world-stress": "bash gallery/game_engine/scripts/build-world-stress.sh",
    "engine:game-sdl:streaming-world": "bash gallery/game_engine/scripts/build-streaming-world-sdl.sh",
    "engine:game-sdl:run:rust-pong": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/rust_pong/logic.wasm",
    "engine:game-sdl:smoke:rust-pong": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/rust_pong/logic.wasm 180",
    "engine:game-sdl:run:rust-autopeli": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/autopeli_wasm/logic.wasm",
    "engine:game-sdl:smoke:rust-autopeli": "bash gallery/game_engine/scripts/build-game-sdl.sh --run gallery/game_engine/games/autopeli_wasm/logic.wasm 180",
    "engine:game-sdl-native": "bash gallery/game_engine/scripts/build-game-sdl-native.sh invaders",
    "engine:game-sdl-native:run:invaders": "bash gallery/game_engine/scripts/build-game-sdl-native.sh --run invaders",
    "engine:game-sdl-native:run:pong": "bash gallery/game_engine/scripts/build-game-sdl-native.sh --run pong",
    "engine:game-sdl-native:run:pacman": "bash gallery/game_engine/scripts/build-game-sdl-native.sh --run pacman",
    "engine:game-sdl-native:smoke:invaders": "bash gallery/game_engine/scripts/build-game-sdl-native.sh --run invaders 300",
    "engine:game-sdl-native:smoke:pong": "bash gallery/game_engine/scripts/build-game-sdl-native.sh --run pong 180",
    "engine:game-sdl-native:smoke:pacman": "bash gallery/game_engine/scripts/build-game-sdl-native.sh --run pacman 300",
    "engine:game-sdl-native:watch:pacman": "node gallery/game_engine/scripts/watch-game-sdl-native.mjs pacman",
    "engine:game-sdl-native:watch:invaders": "node gallery/game_engine/scripts/watch-game-sdl-native.mjs invaders",
    "engine:game-sdl-native:watch:pong": "node gallery/game_engine/scripts/watch-game-sdl-native.mjs pong",
    "engine": "npm run engine:compile && npm run engine:run",
    "jsparser:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/js_parser/js_parser_main.rgr -d=./gallery/js_parser -o=js_parser.js -nodecli",
    "jsparser:compile:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=cpp ./gallery/js_parser/js_parser_main.rgr -d=./gallery/js_parser -o=js_parser -nodecli",
    "jsparser:compile:swift": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=swift6 ./gallery/js_parser/js_parser_main.rgr -d=./gallery/js_parser -o=js_parser -nodecli",
    "jsparser:compile:go": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=go ./gallery/js_parser/js_parser_main.rgr -d=./gallery/js_parser -o=js_parser.js -nodecli",
    "jsparser:module": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 -nodemodule ./gallery/js_parser/js_parser_main.rgr -d=./gallery/js_parser/benchmark -o=js_parser_module.cjs",
    "jsparser:compile:rust": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=rust ./gallery/js_parser/js_parser_main.rgr -d=./gallery/js_parser -o=js_parser -nodecli",
    "jsparser:build:rust": "npm run jsparser:compile:rust && rustc -O gallery/js_parser/js_parser.rs -o gallery/js_parser/js_parser_rust.exe",
    "jsparser:build:cpp": "wsl x86_64-w64-mingw32-g++-posix -std=c++17 -static -O3 gallery/js_parser/js_parser.cpp -o gallery/js_parser/js_parser_cpp.exe",
    "jsparser:build:swift": "swiftc -O -parse-as-library gallery/js_parser/js_parser.swift -o gallery/js_parser/js_parser_swift.exe",
    "jsparser:compile:all": "npm run jsparser:compile:cpp && npm run jsparser:compile:rust && npm run jsparser:compile:swift",
    "jsparser:build:all": "npm run jsparser:compile:all && npm run jsparser:build:cpp && npm run jsparser:build:rust && npm run jsparser:build:swift",
    "jsparser:run": "node ./gallery/js_parser/js_parser.js",
    "jsparser:run:rust": "./gallery/js_parser/js_parser_rust",
    "jsparser:test": "node ./gallery/js_parser/js_parser.js ./gallery/js_parser/test.js",
    "jsparser": "npm run jsparser:compile && npm run jsparser:run",
    "tsparser:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/ts_parser/ts_parser_main.rgr -d=./gallery/ts_parser/bin -o=ts_parser_main.js -nodecli",
    "tsparser:compile:rust": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=rust ./gallery/ts_parser/ts_parser_main.rgr -d=./gallery/ts_parser/bin -o=ts_parser_main.rs -nodecli",
    "tsparser:compile:go": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=go ./gallery/ts_parser/ts_parser_main.rgr -d=./gallery/ts_parser/bin -o=ts_parser_main.go -nodecli",
    "tsparser:compile:swift": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=swift6 ./gallery/ts_parser/ts_parser_main.rgr -d=./gallery/ts_parser/bin -o=ts_parser_main.swift -nodecli",
    "tsparser:compile:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=cpp ./gallery/ts_parser/ts_parser_main.rgr -d=./gallery/ts_parser/bin -o=ts_parser_main.cpp -nodecli",
    "tsparser:compile:dart": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=dart ./gallery/ts_parser/ts_parser_main.rgr -d=./gallery/ts_parser/bin -o=ts_parser_main.dart -nodecli",
    "tsparser:compile:all": "npm run tsparser:compile && npm run tsparser:compile:rust && npm run tsparser:compile:go && npm run tsparser:compile:swift && npm run tsparser:compile:cpp && npm run tsparser:compile:dart",
    "tsparser:module": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 -nodemodule ./gallery/ts_parser/ts_parser_main.rgr -d=./gallery/ts_parser/benchmark -o=ts_parser_module.cjs",
    "tsparser:module:esm": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 -esm ./gallery/ts_parser/ts_parser_main.rgr -d=./gallery/ts_parser/benchmark -o=ts_parser_module.mjs",
    "tsparser:build:rust": "npm run tsparser:compile:rust && rustc -O gallery/ts_parser/bin/ts_parser_main.rs -o gallery/ts_parser/bin/ts_parser_rust.exe",
    "tsparser:build:go": "npm run tsparser:compile:go && cd gallery/ts_parser/bin && go build -o ts_parser_go.exe ts_parser_main.go",
    "tsparser:build:swift": "npm run tsparser:compile:swift && swiftc -O -parse-as-library gallery/ts_parser/bin/ts_parser_main.swift -o gallery/ts_parser/bin/ts_parser_swift.exe",
    "tsparser:build:cpp": "npm run tsparser:compile:cpp && wsl g++ -std=c++17 -O2 -o gallery/ts_parser/bin/ts_parser_cpp.exe gallery/ts_parser/bin/ts_parser_main.cpp",
    "tsparser:benchmark": "npm run tsparser:module && cd gallery/ts_parser/benchmark && npm run benchmark",
    "tsparser:run": "node ./gallery/ts_parser/bin/ts_parser_main.js -d",
    "tsparser:run:rust": "./gallery/ts_parser/bin/ts_parser_rust.exe -d",
    "tsparser:run:dart": "dart run ./gallery/ts_parser/bin/ts_parser_main.dart -d",
    "tsparser": "npm run tsparser:compile && npm run tsparser:run",
    "test:dart:tsparser": "vitest run --config tests/vitest.config.ts compiler-dart-tsparser.test.ts",
    "ts2ranger:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/ts_to_ranger/ts_emitter_main.rgr -d=./gallery/ts_to_ranger/bin -o=ts_emitter_main.js -nodecli && node gallery/ts_to_ranger/scripts/patch-emitter-utf8.mjs",
    "ts2ranger:emit": "npm run ts2ranger:compile && node ./gallery/ts_to_ranger/bin/ts_emitter_main.js",
    "engine:pong:runner": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/tests/pong_runner_demo.rgr -d=./tests/.output -o=pong_runner_demo.js -nodecli && node ./tests/.output/pong_runner_demo.js 180",
    "engine:pong:native": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ranger_games/pong_native_runner.rgr -d=./tests/.output -o=pong_native_runner.js -nodecli && node ./tests/.output/pong_native_runner.js 180",
    "engine:invaders:native": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ranger_games/invaders_native_runner.rgr -d=./tests/.output -o=invaders_native_runner.js -nodecli && node ./tests/.output/invaders_native_runner.js 600",
    "engine:invaders:native:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=cpp ./gallery/game_engine/ranger_games/invaders_native_runner.rgr -d=./tests/.output -o=invaders_native_runner.cpp -nodecli && cp gallery/invaders/variant.hpp tests/.output/variant.hpp && g++ -std=c++17 -pthread tests/.output/invaders_native_runner.cpp -o tests/.output/invaders_native_runner_cpp.exe && ./tests/.output/invaders_native_runner_cpp.exe 600",
    "engine:pong:native:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=cpp ./gallery/game_engine/ranger_games/pong_native_runner.rgr -d=./tests/.output -o=pong_native_runner.cpp -nodecli && cp gallery/invaders/variant.hpp tests/.output/variant.hpp && g++ -std=c++17 -pthread tests/.output/pong_native_runner.cpp -o tests/.output/pong_native_runner_cpp.exe && ./tests/.output/pong_native_runner_cpp.exe 180",
    "engine:spawner:runner": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/tests/spawner_runner_demo.rgr -d=./tests/.output -o=spawner_runner_demo.js -nodecli && node ./tests/.output/spawner_runner_demo.js 30",
    "engine:spawner:native": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/ranger_games/spawner_native_runner.rgr -d=./tests/.output -o=spawner_native_runner.js -nodecli && node ./tests/.output/spawner_native_runner.js 30",
    "engine:vocalfx": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/vocal_fx_runner_demo.rgr -d=./tests/.output -o=vocal_fx_runner_demo.js -nodecli && node ./tests/.output/vocal_fx_runner_demo.js 170",
    "engine:vocalfx:selftest": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/game_engine/scripting/vocal_fx_selftest.rgr -d=./tests/.output -o=vocal_fx_selftest.js -nodecli && node ./tests/.output/vocal_fx_selftest.js",
    "pdf:print:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/pdf_writer/test/print_finishing_test.rgr -d=./gallery/pdf_writer/bin -o=print_finishing_test.js -nodecli && node ./gallery/pdf_writer/bin/print_finishing_test.js",
    "pdf:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/core/PDFWriter.rgr -d=./gallery/pdf_writer/bin -o=pdf_writer.js -nodecli",
    "pdf:run": "node ./gallery/pdf_writer/bin/pdf_writer.js",
    "pdf": "npm run pdf:compile && npm run pdf:run",
    "jpegmeta:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/jpeg/JPEGMetadata.rgr -d=./gallery/pdf_writer/bin -o=jpeg_metadata.js -nodecli",
    "jpegmeta:run": "node ./gallery/pdf_writer/bin/jpeg_metadata.js",
    "jpegmeta": "npm run jpegmeta:compile && npm run jpegmeta:run",
    "jpegdec:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/jpeg_decoder_test.rgr -d=./gallery/pdf_writer/bin -o=jpeg_decoder_test.js -nodecli",
    "jpegdec:run": "node ./gallery/pdf_writer/bin/jpeg_decoder_test.js",
    "jpegdec": "npm run jpegdec:compile && npm run jpegdec:run",
    "jpegenc:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/jpeg_encoder_test.rgr -d=./gallery/pdf_writer/bin -o=jpeg_encoder_test.js -nodecli",
    "jpegenc:run": "node ./gallery/pdf_writer/bin/jpeg_encoder_test.js",
    "jpegenc": "npm run jpegenc:compile && npm run jpegenc:run",
    "exif:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/exif_orientation_test.rgr -d=./gallery/pdf_writer/bin -o=exif_orientation_test.js -nodecli",
    "exif:run": "node ./gallery/pdf_writer/bin/exif_orientation_test.js",
    "exif": "npm run exif:compile && npm run exif:run",
    "jpegscaler:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=es6 ./gallery/pdf_writer/src/tools/jpeg_scaler.rgr -d=./gallery/pdf_writer/bin -o=jpeg_scaler.js -nodecli",
    "jpegscaler:compile:go": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=go ./gallery/pdf_writer/src/tools/jpeg_scaler.rgr -d=./gallery/pdf_writer/bin -o=jpeg_scaler.go -nodecli",
    "jpegscaler:compile:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=cpp ./gallery/pdf_writer/src/tools/jpeg_scaler.rgr -d=./gallery/pdf_writer/bin -o=jpeg_scaler.cpp -nodecli",
    "jpegscaler:compile:rust": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=rust ./gallery/pdf_writer/src/tools/jpeg_scaler.rgr -d=./gallery/pdf_writer/bin -o=jpeg_scaler.rs -nodecli",
    "jpegscaler:build:go": "npm run jpegscaler:compile:go && cd gallery/pdf_writer/bin && go build -o jpeg_scaler.exe jpeg_scaler.go",
    "jpegscaler:build:cpp": "npm run jpegscaler:compile:cpp && g++ -std=c++17 -O3 -pthread gallery/pdf_writer/bin/jpeg_scaler.cpp -o gallery/pdf_writer/bin/jpeg_scaler_cpp.exe",
    "jpegscaler:build:rust": "npm run jpegscaler:compile:rust && rustc --edition 2021 -O gallery/pdf_writer/bin/jpeg_scaler.rs -o gallery/pdf_writer/bin/jpeg_scaler_rust.exe",
    "jpegscaler:bench": "bash gallery/pdf_writer/bench/jpeg_scaler_bench.sh",
    "zip:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/zip/zip_tool.rgr -d=./gallery/zip/bin -o=zip_tool.js -nodecli",
    "zip:run": "node ./gallery/zip/bin/zip_tool.js",
    "zip": "npm run zip:compile && npm run zip:run",
    "zstd:fixtures": "node gallery/zstd/tools/make-fixtures.mjs",
    "zstd:test": "bash scripts/rgr-suite.sh ./gallery/zstd/tests/ZstdTest.rgr ./gallery/zstd/bin ZstdTest.js",
    "zstd:tool": "bash scripts/rgr-suite.sh ./gallery/zstd/src/zstd_tool.rgr ./gallery/zstd/bin zstd_tool.js",
    "zstd:bench": "node gallery/zstd/bench/compare.mjs",
    "pkg:fixtures": "node pkg/tools/make-fixtures.mjs",
    "pkg:test": "bash scripts/rgr-suite.sh ./pkg/tests/PkgTest.rgr ./pkg/bin PkgTest.js",
    "pkg:test:go": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=go ./pkg/tests/PkgTest.rgr -d=./tmp/pkg-targets -o=PkgTest.go -nodecli && go run ./tmp/pkg-targets/PkgTest.go",
    "pkg:test:python": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=python ./pkg/tests/PkgTest.rgr -d=./tmp/pkg-targets -o=PkgTest.py -nodecli && python3 ./tmp/pkg-targets/PkgTest.py",
    "pkg:test:targets": "bash scripts/pkg-targets.sh",
    "pkg:tool": "bash scripts/rgr-suite.sh ./pkg/src/pkg_tool.rgr ./pkg/bin pkg_tool.js",
    "pkg:clone": "node pkg/tools/clone.mjs",
    "figma:test": "bash scripts/rgr-suite.sh ./gallery/figma/tests/FigTest.rgr ./gallery/figma/bin FigTest.js",
    "figma:cli": "bash scripts/rgr-suite.sh ./gallery/figma/src/fig_cli.rgr ./gallery/figma/bin fig_cli.js",
    "figma:inspect": "npm run figma:cli && node gallery/figma/bin/fig_cli.js sample",
    "figma:to-evg": "npm run --silent figma:cli:build && node gallery/figma/bin/fig_cli.js to-evg",
    "figma:from-evg": "npm run --silent figma:cli:build && node gallery/figma/bin/fig_cli.js from-evg",
    "figma:rewrite": "npm run --silent figma:cli:build && node gallery/figma/bin/fig_cli.js rewrite",
    "figma:cli:build": "bash scripts/rgr-suite.sh ./gallery/figma/src/fig_cli.rgr ./gallery/figma/bin fig_cli.js --built >/dev/null 2>&1 || true",
    "figma:web": "bash gallery/figma/web/standalone/build.sh",
    "rafi:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/figma/web/rafi/RafiApp.rgr -d=./gallery/figma/bin -o=RafiApp.cjs",
    "rafi:page": "npm run rafi:build --silent && node gallery/figma/web/rafi/build.mjs",
    "rafi:web": "npm run rafi:page --silent && python3 -m http.server -d gallery/figma/web/rafi 8011",
    "figma": "node gallery/figma/cli.mjs",
    "rafi:test": "npm run rafi:page --silent && node gallery/figma/web/rafi/smoke.mjs",
    "rave:build": "rm -f ./gallery/rave/bin/RaveEditor.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/rave/src/RaveEditor.rgr -d=./gallery/rave/bin -o=RaveEditor.cjs",
    "rave:page": "npm run rave:build --silent && node gallery/rave/web/build.mjs",
    "rave:web": "node gallery/rave/cli.mjs serve",
    "rave:smoke": "npm run rave:page --silent && node gallery/rave/web/smoke.mjs",
    "rave:cli:build": "rm -f ./gallery/rave/bin/rave_cli.js && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rave/src/rave_cli.rgr -d=./gallery/rave/bin -o=rave_cli.js -nodecli",
    "rave": "node gallery/rave/cli.mjs",
    "rave:mcp": "node gallery/rave/mcp/server.mjs",
    "rave:mcp:check": "node gallery/rave/mcp/check.mjs",
    "rave:serve:check": "npm run rave:page --silent && node gallery/rave/web/serve-check.mjs",
    "rave:test": "rm -f ./gallery/rave/bin/RaveTest.js && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/rave/tests/RaveTest.rgr -d=./gallery/rave/bin -o=RaveTest.js -nodecli && node ./gallery/rave/bin/RaveTest.js",
    "figma:web:serve": "bash gallery/figma/web/standalone/build.sh && python3 -m http.server -d gallery/figma/web/standalone/dist 8010",
    "figma:web:test": "bash gallery/figma/web/standalone/build.sh && node gallery/figma/web/standalone/smoke.mjs",
    "figma:bench": "node gallery/figma/bench/compare.mjs",
    "evg:a11y:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGA11yTest.rgr -d=./gallery/evg/bin -o=EVGA11yTest.js -nodecli && node ./gallery/evg/bin/EVGA11yTest.js",
    "ui:table:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/table_check.mjs",
    "ui:tree:dnd:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/tree_dnd_check.mjs",
    "ui:tree:dnd:oracle": "node gallery/ui/conformance/oracle/tree_dnd_oracle.mjs",
    "ui:table:oracle": "node gallery/ui/conformance/oracle/table_oracle.mjs",
    "ui:virtual:oracle": "node gallery/ui/conformance/oracle/virtual_oracle.mjs",
    "evg:scroll:oracle": "node gallery/ui/conformance/oracle/scroll_oracle.mjs",
    "evg:radius:oracle": "node gallery/ui/conformance/oracle/radius_oracle.mjs",
    "evg:radius:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/radius_check.mjs",
    "evg:flexmin:oracle": "node gallery/ui/conformance/oracle/flexmin_oracle.mjs",
    "evg:flexmin:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/flexmin_check.mjs",
    "evg:textbox:oracle": "node gallery/ui/conformance/oracle/textbox_oracle.mjs",
    "evg:textbox:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/textbox_check.mjs",
    "evg:scroll:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/scroll_check.mjs",
    "ui:message:check": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MessageDemo.rgr -d=./gallery/ui/bin -o=MessageDemo.cjs && node gallery/ui/demo/message-check.mjs",
    "ui:quest:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/questionnaire_check.mjs",
    "ui:scroller:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/scroller_check.mjs",
    "ui:semantics:check": "npm run ui:demo:build --silent && node gallery/ui/demo/semantics-check.mjs",
    "ui:offset:check": "node gallery/ui/tests/offset-check.mjs",
    "ui:offset:js": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/ui/tests/OffsetProbe.rgr -d=./gallery/ui/bin -o=OffsetProbe.js -nodecli && node ./gallery/ui/bin/OffsetProbe.js",
    "ui:offset:cpp": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=cpp ./gallery/ui/tests/OffsetProbe.rgr -d=./gallery/ui/bin -o=OffsetProbe.cpp -nodecli && g++ -std=c++17 -O0 -o ./gallery/ui/bin/offsetprobe ./gallery/ui/bin/OffsetProbe.cpp && ./gallery/ui/bin/offsetprobe",
    "ui:switch:oracle": "node gallery/ui/conformance/oracle/switch_oracle.mjs",
    "ui:filters:oracle": "node gallery/ui/conformance/oracle/filters_oracle.mjs",
    "ui:eventcal:oracle": "node gallery/ui/conformance/oracle/eventcal_oracle.mjs",
    "ui:progress:oracle": "node gallery/ui/conformance/oracle/progress_oracle.mjs",
    "ui:progress:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/progress_check.mjs",
    "ui:number:oracle": "node gallery/ui/conformance/oracle/numberfield_oracle.mjs",
    "ui:number:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/numberfield_check.mjs",
    "ui:datefield:oracle": "node gallery/ui/conformance/oracle/datefield_oracle.mjs",
    "ui:datefield:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/datefield_check.mjs",
    "ui:otp:oracle": "node gallery/ui/conformance/oracle/otp_oracle.mjs",
    "ui:otp:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/otp_check.mjs",
    "ui:combobox:oracle": "node gallery/ui/conformance/oracle/combobox_oracle.mjs",
    "ui:combobox:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/combobox_check.mjs",
    "ui:metadata:check": "npm run ui:demo:build --silent && node gallery/ui/demo/metadata-check.mjs",
    "ui:stepper:oracle": "node gallery/ui/conformance/oracle/stepper_oracle.mjs",
    "ui:stepper:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/stepper_check.mjs",
    "ui:slider:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/slider_check.mjs",
    "ui:eventcal:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/eventcal_check.mjs",
    "ui:filters:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/filters_check.mjs",
    "ui:switch:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/switch_check.mjs",
    "ui:textinput:oracle": "node gallery/ui/conformance/oracle/textinput_oracle.mjs",
    "ui:pointer:oracle": "node gallery/ui/conformance/oracle/pointer_oracle.mjs",
    "ui:pointer:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/pointer_check.mjs",
    "ui:calendar:demo": "npm run ui:demo:build --silent && node gallery/ui/demo/calendar-check.mjs",
    "ui:filters:demo": "npm run ui:demo:build --silent && node gallery/ui/demo/filters-demo-check.mjs",
    "ui:eventcal:demo": "npm run ui:demo:build --silent && node gallery/ui/demo/eventcal-demo-check.mjs",
    "ui:controls:demo": "npm run ui:demo:build --silent && node gallery/ui/demo/controls-demo-check.mjs",
    "ui:otp:demo": "npm run ui:demo:build --silent && node gallery/ui/demo/otp-demo-check.mjs",
    "ui:calendar:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/calendar_check.mjs",
    "ui:virtual:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/virtual_check.mjs",
    "evg:shift:check": "node gallery/evg/gl/shift-check.mjs",
    "evg:rotation:check": "node gallery/evg/gl/rotation-check.mjs",
    "evg:blur:check": "node gallery/evg/gl/blur-check.mjs",
    "evg:blur:oracle": "node gallery/evg/oracle/css_blur_oracle.mjs",
    "evg:timing:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGTimingTest.rgr -d=./gallery/evg/bin -o=EVGTimingTest.js -nodecli && node ./gallery/evg/bin/EVGTimingTest.js",
    "evg:timing:oracle": "node gallery/evg/oracle/css_timing_oracle.mjs",
    "evg:reconcile:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGReconcileTest.rgr -d=./gallery/evg/bin -o=EVGReconcileTest.js -nodecli && node ./gallery/evg/bin/EVGReconcileTest.js",
    "watchevg:bench:build": "bash gallery/watch_evg/bench/scripts/build-ranger.sh",
    "watchevg:bench": "bash gallery/watch_evg/bench/scripts/run-jvm.sh",
    "watchevg:bench:c1": "bash gallery/watch_evg/bench/scripts/run-jvm.sh --c1",
    "watchevg:bench:native": "bash gallery/watch_evg/bench/scripts/run-native.sh",
    "watchevg:bench:js": "npm run watchevg:bench:build --silent && node gallery/watch_evg/bench/watch-bench.mjs",
    "ui:bench:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/bench/UiBench.rgr -d=./gallery/ui/bin -o=UiBench.cjs",
    "ui:bench": "npm run ui:bench:build --silent && node gallery/ui/bench/ui-bench.mjs",
    "ui:bench:paint": "npm run ui:bench:build --silent && node gallery/ui/bench/ui-bench.mjs --paint",
    "ui:runner:bench:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MessageDemo.rgr -d=./gallery/ui/bin -o=MessageDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/DashboardDemo.rgr -d=./gallery/ui/bin -o=DashboardDemo.cjs",
    "ui:runner:bench": "npm run ui:runner:bench:build --silent && node gallery/ui/bench/runner-vs-browser.mjs",
    "evg:inspect:test": "npm run ui:demo:build --silent && node gallery/evg/inspect/inspect-check.mjs",
    "evg:inspect:web": "bash gallery/pptx/web/html/build.sh > /dev/null && node gallery/evg/inspect/browser-smoke.mjs",
    "evg:inspect:shots": "node gallery/evg/inspect/shots.mjs",
    "evg:inspect:live": "npm run ui:demo:build --silent && node gallery/ui/demo/build.mjs && node gallery/evg/inspect/live-css-check.mjs",
    "evg:inspect:demo": "npm run ui:demo:build --silent && node gallery/ui/demo/build.mjs && node gallery/ui/web/serve.mjs",
    "ui:sortable:motion": "npm run ui:demo:build --silent && node gallery/ui/demo/sortable-motion-check.mjs",
    "ui:tree:checkbox": "npm run ui:demo:build --silent && node gallery/ui/demo/tree-checkbox-check.mjs",
    "ui:timeline:check": "npm run ui:demo:build --silent && node gallery/ui/demo/timeline-check.mjs",
    "ui:resize:check": "npm run ui:demo:build --silent && node gallery/ui/demo/resize-check.mjs",
    "ui:form:check": "npm run ui:demo:build --silent && node gallery/ui/demo/form-check.mjs",
    "ui:profile:check": "npm run ui:demo:build --silent && node gallery/ui/demo/profile-check.mjs",
    "ui:dashboard:check": "npm run ui:demo:build --silent && node gallery/ui/demo/dashboard-check.mjs",
    "evg:invalidate:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGInvalidateTest.rgr -d=./gallery/evg/bin -o=EVGInvalidateTest.js -nodecli && node ./gallery/evg/bin/EVGInvalidateTest.js",
    "evg:stylecache:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGStyleCacheTest.rgr -d=./gallery/evg/bin -o=EVGStyleCacheTest.js -nodecli && node ./gallery/evg/bin/EVGStyleCacheTest.js",
    "evg:component:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGComponentTest.rgr -d=./gallery/evg/bin -o=EVGComponentTest.js -nodecli && node ./gallery/evg/bin/EVGComponentTest.js",
    "evg:adopt:check": "node scripts/check-evg-adopt.mjs",
    "evg:tags:check": "node scripts/check-tree-tags.mjs",
    "evg:viewport:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGViewportUnitTest.rgr -d=./gallery/evg/bin -o=EVGViewportUnitTest.js -nodecli && node ./gallery/evg/bin/EVGViewportUnitTest.js",
    "evg:flexrules:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGFlexRulesTest.rgr -d=./gallery/evg/bin -o=EVGFlexRulesTest.js -nodecli && node ./gallery/evg/bin/EVGFlexRulesTest.js",
    "evg:layout:bench:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/evg/bench/EvgLayoutBench.rgr -d=./gallery/evg/bin -o=EvgLayoutBench.cjs",
    "evg:layout:bench": "npm run evg:layout:bench:build --silent && node --expose-gc gallery/evg/bench/layout-bench.mjs",
    "evg:layout:conformance": "npm run evg:layout:bench:build --silent && node gallery/evg/bench/layout-conformance.mjs",
    "evg:flexwrap:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGFlexWrapTest.rgr -d=./gallery/evg/bin -o=EVGFlexWrapTest.js -nodecli && node ./gallery/evg/bin/EVGFlexWrapTest.js",
    "evg:box:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGBoxShorthandTest.rgr -d=./gallery/evg/bin -o=EVGBoxShorthandTest.js -nodecli && node ./gallery/evg/bin/EVGBoxShorthandTest.js",
    "evg:box:oracle": "node gallery/evg/oracle/css_box_oracle.mjs",
    "evg:style:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGStyleStateTest.rgr -d=./gallery/evg/bin -o=EVGStyleStateTest.js -nodecli && node ./gallery/evg/bin/EVGStyleStateTest.js",
    "evg:focus:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGFocusTest.rgr -d=./gallery/evg/bin -o=EVGFocusTest.js -nodecli && node ./gallery/evg/bin/EVGFocusTest.js",
    "evg:stylevar:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGStyleVarTest.rgr -d=./gallery/evg/bin -o=EVGStyleVarTest.js -nodecli && node ./gallery/evg/bin/EVGStyleVarTest.js",
    "evg:overlay:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGOverlayTest.rgr -d=./gallery/evg/bin -o=EVGOverlayTest.js -nodecli && node ./gallery/evg/bin/EVGOverlayTest.js",
    "evg:fixed:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGFixedTest.rgr -d=./gallery/evg/bin -o=EVGFixedTest.js -nodecli && node ./gallery/evg/bin/EVGFixedTest.js",
    "evg:rtl:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGRtlLayoutTest.rgr -d=./gallery/evg/bin -o=EVGRtlLayoutTest.js -nodecli && node ./gallery/evg/bin/EVGRtlLayoutTest.js",
    "evg:ruler:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGRulerTest.rgr -d=./gallery/evg/bin -o=EVGRulerTest.js -nodecli && node ./gallery/evg/bin/EVGRulerTest.js",
    "evg:toolbar:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGToolbarTest.rgr -d=./gallery/evg/bin -o=EVGToolbarTest.js -nodecli && node ./gallery/evg/bin/EVGToolbarTest.js",
    "icons:sheet": "mkdir -p tmp/icons && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/datagrid/src/dump_icons.rgr -d=./gallery/datagrid/bin -o=dump_icons.js -nodecli && node ./gallery/datagrid/bin/dump_icons.js",
    "evg:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/evg/evg_test.rgr -d=./gallery/evg/bin -o=evg_test.js -nodecli",
    "evg:run": "node ./gallery/evg/bin/evg_test.js",
    "evg:hostmeasurer:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGHostMeasurerTest.rgr -d=./gallery/evg/bin -o=EVGHostMeasurerTest.js -nodecli && node ./gallery/evg/bin/EVGHostMeasurerTest.js",
    "evg:measure:web": "node gallery/evg/gl/measure-check.mjs",
    "evg:binary:check": "node gallery/evg/gl/list-binary-check.mjs",
    "evg:view:policy": "node gallery/evg/gl/view-policy-check.mjs",
    "evg:view:check": "node gallery/evg/gl/view-check.mjs",
    "evg:stroke:check": "node gallery/evg/gl/stroke-check.mjs",
    "evg:gestures:check": "node gallery/evg/gl/gestures-check.mjs",
    "evg:hosttree:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGHostTreeTest.rgr -d=./gallery/evg/bin -o=EVGHostTreeTest.js -nodecli && node ./gallery/evg/bin/EVGHostTreeTest.js",
    "evg:json:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EVGJsonTest.rgr -d=./gallery/evg/bin -o=EVGJsonTest.js -nodecli && node ./gallery/evg/bin/EVGJsonTest.js",
    "agent": "bash scripts/rgr-suite.sh ./gallery/evg/agent/evg_agent.rgr ./gallery/evg/bin evg_agent.js",
    "evgjson:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_json_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_json_tool.js -nodecli",
    "agent:import": "bash scripts/rgr-suite.sh ./gallery/pdf_writer/src/tools/evg_json_tool.rgr ./gallery/pdf_writer/bin evg_json_tool.js",
    "agent:render": "bash scripts/rgr-suite.sh ./gallery/pdf_writer/src/tools/evg_png_tool.rgr ./gallery/pdf_writer/bin evg_png_tool.js",
    "agent:html": "bash scripts/rgr-suite.sh ./gallery/pdf_writer/src/tools/evg_html_tool.rgr ./gallery/pdf_writer/bin evg_html_tool.js",
    "agent:roundtrip": "bash gallery/evg/agent/roundtrip.sh",
    "agent:smoke": "bash gallery/evg/agent/smoke.sh",
    "evg:patch:test": "bash -o pipefail -c 'bash scripts/rgr-suite.sh ./gallery/evg/EVGPatchTest.rgr ./gallery/evg/bin EVGPatchTest.js | tee /dev/stderr | grep -q \"ALL PASS\"'",
    "evg:trace:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/EvgBitmapTracerTest.rgr -d=./gallery/evg/bin -o=EvgBitmapTracerTest.js -nodecli && node ./gallery/evg/bin/EvgBitmapTracerTest.js",
    "evg:trace:bench": "bash gallery/evg/tools/run_trace_bench.sh",
    "evg:trace:cli": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/tools/evg_trace_cli.rgr -d=./gallery/evg/bin -o=evg_trace_cli.js -nodecli && node ./gallery/evg/bin/evg_trace_cli.js",
    "evg:trace:cli:run": "node ./gallery/evg/bin/evg_trace_cli.js",
    "evg:trace:cli:py": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=python ./gallery/evg/tools/evg_trace_cli.rgr -d=./gallery/evg/bin -o=evg_trace_cli.py -nodecli",
    "evg:trace:cli:cpp": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=cpp ./gallery/evg/tools/evg_trace_cli.rgr -d=./gallery/evg/bin -o=evg_trace_cli.cpp -nodecli && g++ -O2 -std=c++17 -o gallery/evg/bin/evg_trace_cli gallery/evg/bin/evg_trace_cli.cpp",
    "evg:trace:cli:rust": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -l=rust ./gallery/evg/tools/evg_trace_cli.rgr -d=./gallery/evg/bin -o=evg_trace_cli.rs -nodecli && rustc --edition 2021 -O -o gallery/evg/bin/evg_trace_cli_rust gallery/evg/bin/evg_trace_cli.rs",
    "evg:trace:cli:rust:run": "./gallery/evg/bin/evg_trace_cli_rust",
    "evg:trace:cli:smoke": "bash gallery/evg/tools/run_trace_cli_smoke.sh",
    "evg:trace:web": "node gallery/evg/web/tracer/build.mjs",
    "evg:trace:web:smoke": "node gallery/evg/web/tracer/smoke.mjs",
    "evg:trace:web:serve": "node gallery/evg/web/tracer/build.mjs && python3 -m http.server -d gallery/evg/web/tracer/dist 8006",
    "evg:responsive:check": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/web/responsive/EvgResponsiveCheck.rgr -d=./gallery/evg/bin -o=EvgResponsiveCheck.js -nodecli && node ./gallery/evg/bin/EvgResponsiveCheck.js",
    "evg:responsive:web": "node gallery/evg/web/responsive/build.mjs",
    "evg:dom:check": "node gallery/evg/web/responsive/dom-check.mjs",
    "evg:responsive:web:smoke": "node gallery/evg/web/responsive/smoke.mjs",
    "evg:responsive:web:serve": "node gallery/evg/web/responsive/build.mjs && python3 -m http.server -d gallery/evg/web/responsive/dist 8007",
    "evg": "npm run evg:compile && npm run evg:run",
    "evgpdf:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_pdf_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_pdf_tool.js -nodecli",
    "evgpdf:compile:go": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=go ./gallery/pdf_writer/src/tools/evg_pdf_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_pdf_tool.go -nodecli",
    "evgpdf:build:go": "npm run evgpdf:compile:go && cd gallery/pdf_writer/bin && go build -o evg_pdf_tool.exe evg_pdf_tool.go",
    "evgpdf:run": "node ./gallery/pdf_writer/bin/evg_pdf_tool.js ./gallery/pdf_writer/examples/test_simple.tsx ./gallery/pdf_writer/output/pdfs/sample_output.pdf",
    "evgpdf:test": "npm run evgpdf:compile && npm run evgpdf:run",
    "evgpdf": "npm run evgpdf:compile && npm run evgpdf:run",
    "evghtml:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_html_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_html_tool.js -nodecli",
    "evghtml:run": "node ./gallery/pdf_writer/bin/evg_html_tool.js ./gallery/pdf_writer/examples/test_simple.tsx ./gallery/pdf_writer/output/html/sample_output.html",
    "evghtml:test": "npm run evghtml:compile && npm run evghtml:run",
    "evghtml": "npm run evghtml:compile && npm run evghtml:run",
    "evgpreview:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=go ./gallery/pdf_writer/src/tools/evg_preview_server.rgr -d=./gallery/pdf_writer/bin -o=evg_preview_server.go -nodecli",
    "evgpreview:build": "npm run evgpreview:compile && cd gallery/pdf_writer/bin && go build -o evg_preview_server evg_preview_server.go",
    "evgpreview:start": "./gallery/pdf_writer/bin/evg_preview_server",
    "pdf-tool:module": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 -nodemodule ./gallery/pdf_writer/src/lib/ranger_pdf_tool.rgr -d=./gallery/pdf_writer/dist -o=ranger_pdf_tool.js",
    "pdf-tool:cli:pdf": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_pdf_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_pdf_tool.js -nodecli",
    "pdf-tool:cli:html": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_html_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_html_tool.js -nodecli",
    "pdf-tool:cli:png": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_png_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_png_tool.js -nodecli",
    "pdf-tool:server": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/lib/express_preview_server.rgr -d=./gallery/pdf_writer/bin -o=evg_preview_server.js -nodecli",
    "pdf-tool:build": "npm run pdf-tool:module && npm run pdf-tool:cli:pdf && npm run pdf-tool:cli:html && npm run pdf-tool:server",
    "evgpreview": "npm run evgpreview:build && npm run evgpreview:start",
    "evgcomp:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_component_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_component_tool.js -nodecli",
    "evgcomp:compile:go": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=go ./gallery/pdf_writer/src/tools/evg_component_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_component_tool.go -nodecli",
    "evgcomp:build:go": "npm run evgcomp:compile:go && cd gallery/pdf_writer/bin && go build -o evg_component_tool.exe evg_component_tool.go",
    "evgcomp:compile:rust": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=rust ./gallery/pdf_writer/src/tools/evg_component_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_component_tool.rs -nodecli",
    "evgcomp:build:rust": "npm run evgcomp:compile:rust && cd gallery/pdf_writer/bin && rustc -O -o evg_component_tool_rust.exe evg_component_tool.rs",
    "evgcomp:compile:cpp": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=cpp ./gallery/pdf_writer/src/tools/evg_component_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_component_tool.cpp -nodecli",
    "evgcomp:build:cpp": "npm run evgcomp:compile:cpp && wsl x86_64-w64-mingw32-g++-posix -std=c++17 -static -O3 gallery/pdf_writer/bin/evg_component_tool.cpp -o gallery/pdf_writer/bin/evg_component_tool_cpp.exe",
    "evgcomp:run": "node ./gallery/pdf_writer/bin/evg_component_tool.js ./gallery/pdf_writer/examples/test_component_simple.tsx ./gallery/pdf_writer/output/pdfs/component_output.pdf \"--assets=./gallery/pdf_writer/assets/fonts;./gallery/pdf_writer/examples/components\"",
    "evgcomp:test": "npm run evgcomp:compile && npm run evgcomp:run",
    "evgcomp": "npm run evgcomp:compile && npm run evgcomp:run",
    "evg:tool:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_tool.js -nodecli",
    "evg:tool:compile:go": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -l=go ./gallery/pdf_writer/src/tools/evg_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_tool.go -nodecli",
    "evg:tool:build:go": "npm run evg:tool:compile:go && cd gallery/pdf_writer/bin && go build -o evg_tool evg_tool.go",
    "evg:tool:run": "node ./gallery/pdf_writer/bin/evg_tool.js",
    "evg:tool": "npm run evg:tool:compile && npm run evg:tool:run",
    "font:compile": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/font_test.rgr -d=./gallery/pdf_writer/bin -o=font_test.js -nodecli",
    "font:run": "node ./gallery/pdf_writer/bin/font_test.js",
    "font": "npm run font:compile && npm run font:run",
    "test:evg": "bash gallery/game_engine/v2/evg/run.sh",
    "test:evg:fonts": "bash gallery/pdf_writer/test/run_fonts.sh",
    "test:evg:frontend": "bash gallery/pdf_writer/test/run_print.sh",
    "test:evg:vector": "bash gallery/pdf_writer/test/run_vector.sh",
    "test:evg:all": "npm run test:evg && npm run test:evg:fonts && npm run test:evg:layout && npm run test:evg:frontend && npm run test:evg:vector",
    "showcase": "node gallery/evg/showcase/build.mjs",
    "showcase:gl": "node gallery/evg/showcase/tests/gl_smoke.mjs",
    "showcase:api": "node gallery/evg/showcase/tests/chart_api_smoke.mjs",
    "evg:displaylist": "cross-env RANGER_LIB=./compiler/Lang.rgr node bin/output.js -es6 ./gallery/pdf_writer/src/tools/evg_displaylist_tool.rgr -d=./gallery/pdf_writer/bin -o=evg_displaylist_tool.js -nodecli && node ./gallery/pdf_writer/bin/evg_displaylist_tool.js",
    "check:stack": "node gallery/game_engine/build-support/check-stack-headroom.mjs",
    "test:evg:layout": "bash gallery/pdf_writer/test/run_layout.sh",
    "selfhost:compile:llvm": "bash scripts/selfhost-llvm.sh",
    "selfhost:check:llvm": "bash scripts/selfhost-llvm.sh verify",
    "selfhost:build:llvm": "bash scripts/selfhost-llvm.sh build",
    "selfhost:round:llvm": "bash scripts/selfhost-llvm.sh round",
    "test:core": "vitest run --config tests/vitest.core.config.ts",
    "esprobes:gen": "node scripts/gen-es-conformance-probes.cjs",
    "test:esconformance": "vitest run --config tests/vitest.esconformance.config.ts",
    "datagrid:sdl": "bash gallery/datagrid/platform/sdl/build.sh",
    "datagrid:sdl:run": "bash gallery/datagrid/platform/sdl/build.sh --run",
    "datagrid:sdl:a11y": "bash gallery/datagrid/platform/sdl/build.sh && SDL_VIDEODRIVER=dummy ./tmp/datagrid-sdl/datagrid_sdl gallery/datagrid/fixtures/business-workbook.xlsx 2 --a11y",
    "datagrid:sdl:smoke": "bash gallery/datagrid/platform/sdl/build.sh && SDL_VIDEODRIVER=dummy ./tmp/datagrid-sdl/datagrid_sdl gallery/datagrid/fixtures/sales.xlsx 20 --save",
    "datagrid:save:bench": "bash scripts/rgr-suite.sh ./gallery/datagrid/bench/save_bench.rgr ./gallery/datagrid/bin save_bench.js",
    "datagrid:save:test": "bash gallery/datagrid/tools/run_save_speed_test.sh",
    "ooxml:text:test": "bash gallery/ooxml/tools/run_text_test.sh",
    "ooxml:package:test": "bash gallery/ooxml/tools/run_package_test.sh",
    "ooxml:opc:test": "bash gallery/ooxml/tools/run_opc_test.sh",
    "odf:package:test": "bash gallery/odf/tools/run_package_test.sh",
    "odp:test": "bash gallery/odp/tools/run_test.sh",
    "office:font:test": "bash gallery/office/text/tools/run_font_test.sh",
    "office:measure:targets": "bash gallery/office/text/tools/run_measure_targets.sh",
    "office:metrics:test": "bash gallery/office/text/tools/run_metrics_test.sh",
    "office:style:test": "bash gallery/office/text/tools/run_style_test.sh",
    "office:bidi:test": "bash gallery/office/text/tools/run_bidi_test.sh",
    "office:arabic:test": "bash gallery/office/text/tools/run_arabic_test.sh",
    "office:shapes:native": "bash gallery/office/geom/tools/run_shapes_native.sh",
    "office:emoji:build": "bash scripts/rgr-suite.sh ./gallery/office/geom/tools/emoji_shapes.rgr ./gallery/office/bin emoji_shapes.js",
    "office:shapes:sheet": "bash scripts/rgr-suite.sh ./gallery/office/geom/tools/shape_sheet.rgr ./gallery/office/bin shape_sheet.js",
    "office:shapes:test": "bash scripts/rgr-suite.sh ./gallery/office/geom/tests/OfficeShapeCatalogTest.rgr ./gallery/office/bin OfficeShapeCatalogTest.js",
    "office:geom:test": "bash gallery/office/geom/tools/run_geom_test.sh",
    "office:text:test": "bash gallery/office/text/tools/run_text_test.sh",
    "office:rtl:editors:test": "bash scripts/rgr-suite.sh ./gallery/office/text/tests/OfficeRtlEditorsTest.rgr ./gallery/office/text/bin OfficeRtlEditorsTest.js",
    "office:rtl:switch:test": "bash scripts/rgr-suite.sh ./gallery/office/text/tests/OfficeRtlSwitchTest.rgr ./gallery/office/text/bin OfficeRtlSwitchTest.js",
    "office:rtl:props:test": "bash scripts/rgr-suite.sh ./gallery/office/text/tests/OfficeRtlPropsTest.rgr ./gallery/office/text/bin OfficeRtlPropsTest.js",
    "office:color:test": "bash gallery/office/drawing/tools/run_color_test.sh",
    "office:history:test": "bash gallery/office/editor/tools/run_history_test.sh",
    "office:asset:test": "bash gallery/office/assets/tools/run_asset_test.sh",
    "gallery:editors:test": "bash scripts/run-gallery-editor-tests.sh",
    "docx_viewer:load:test": "bash gallery/docx_viewer/tools/run_load_test.sh",
    "lang:string:test": "bash tests/lang/run_string_test.sh",
    "datagrid:tables:test": "bash gallery/datagrid/tools/run_tables_test.sh",
    "datagrid:softclip:test": "bash gallery/datagrid/tools/run_soft_clip_test.sh",
    "datagrid:sheets:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/SheetTabTest.rgr ./gallery/datagrid/bin SheetTabTest.js",
    "datagrid:border:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/BorderRenderTest.rgr ./gallery/datagrid/bin BorderRenderTest.js",
    "datagrid:overflow:test": "bash scripts/rgr-suite.sh ./gallery/datagrid/tests/OverflowRenderTest.rgr ./gallery/datagrid/bin OverflowRenderTest.js",
    "ui:menubar": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/ui/demo/MenubarDemo.rgr -d=./gallery/ui/bin -o=MenubarDemo.js -nodecli && node ./gallery/ui/bin/MenubarDemo.js",
    "ui:menubar:png": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MenubarDemo.rgr -d=./gallery/ui/bin -o=MenubarDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/ToolbarDemo.rgr -d=./gallery/ui/bin -o=ToolbarDemo.cjs && node gallery/ui/demo/render.mjs",
    "ui:menubar:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MenubarDemo.rgr -d=./gallery/ui/bin -o=MenubarDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/ToolbarDemo.rgr -d=./gallery/ui/bin -o=ToolbarDemo.cjs",
    "ui:android": "bash gallery/ui/android/scripts/build-app.sh debug",
    "ui:android:ranger": "bash gallery/ui/android/scripts/build-ranger.sh",
    "ui:android:assets": "bash gallery/ui/android/scripts/prepare-assets.sh",
    "ui:android:verify": "bash gallery/ui/android/scripts/verify-desktop.sh",
    "ui:android:run": "bash gallery/ui/android/scripts/run-emulator.sh",
    "ui:android:typecheck": "bash gallery/ui/android/scripts/typecheck-host.sh",
    "ui:ios": "bash gallery/ui/ios/scripts/build-app.sh",
    "ui:ios:run": "bash gallery/ui/ios/scripts/build-app.sh --run",
    "ui:ios:device": "bash gallery/ui/ios/scripts/build-app.sh --target=ios-device --run",
    "ui:ios:device:console": "bash gallery/ui/ios/scripts/build-app.sh --target=ios-device --run --console",
    "ui:ios:watch": "bash gallery/ui/ios/scripts/build-app.sh --target=watchos-simulator --run",
    "ui:ios:check": "bash gallery/ui/ios/scripts/build-app.sh --check",
    "ui:ios:doctor": "bash gallery/ui/ios/scripts/build-app.sh --doctor",
    "ui:ios:plan": "bash gallery/ui/ios/scripts/build-app.sh --dry-run",
    "ui:ios:verify": "bash gallery/ui/ios/scripts/verify.sh",
    "ui:ios:smoke": "bash gallery/ui/ios/scripts/smoke.sh",
    "ui:ios:ranger": "bash gallery/ui/ios/scripts/build-ranger.sh",
    "apple:test": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./lib/apple/apple_test.rgr -nodecli -d=./tmp -o=apple_test.js && node tmp/apple_test.js",
    "shell:test": "cross-env RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./lib/shell_test.rgr -nodecli -d=./tmp -o=shell_test.js && node tmp/shell_test.js",
    "ui:menubar:web": "npm run ui:web",
    "ui:demo:page": "npm run ui:demo:build --silent && node gallery/ui/demo/build.mjs && node gallery/ui/demo/page-check.mjs",
    "ui:input:bench": "npm run ui:demo:build --silent && node gallery/ui/demo/build.mjs && node gallery/ui/demo/input-bench.mjs",
    "ui:input:bench:record": "npm run ui:demo:build --silent && node gallery/ui/demo/build.mjs && node gallery/ui/demo/input-bench.mjs --record",
    "ui:demo:frame": "npm run ui:demo:build --silent && node gallery/ui/demo/ripple-frame-check.mjs",
    "ui:demo:a11y": "npm run ui:demo:build && node gallery/ui/demo/a11y.mjs",
    "ui:demo:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/FilterDemo.rgr -d=./gallery/ui/bin -o=FilterDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/EventCalDemo.rgr -d=./gallery/ui/bin -o=EventCalDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MessageDemo.rgr -d=./gallery/ui/bin -o=MessageDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/ControlsDemo.rgr -d=./gallery/ui/bin -o=ControlsDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MenubarDemo.rgr -d=./gallery/ui/bin -o=MenubarDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/ToolbarDemo.rgr -d=./gallery/ui/bin -o=ToolbarDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/SortableDemo.rgr -d=./gallery/ui/bin -o=SortableDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MotionDemo.rgr -d=./gallery/ui/bin -o=MotionDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/TableDemo.rgr -d=./gallery/ui/bin -o=TableDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/DropdownDemo.rgr -d=./gallery/ui/bin -o=DropdownDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/DialogDemo.rgr -d=./gallery/ui/bin -o=DialogDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/TreeDemo.rgr -d=./gallery/ui/bin -o=TreeDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/TimelineDemo.rgr -d=./gallery/ui/bin -o=TimelineDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/ResizeDemo.rgr -d=./gallery/ui/bin -o=ResizeDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/FormDemo.rgr -d=./gallery/ui/bin -o=FormDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/ProfileDemo.rgr -d=./gallery/ui/bin -o=ProfileDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/DashboardDemo.rgr -d=./gallery/ui/bin -o=DashboardDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/CalendarDemo.rgr -d=./gallery/ui/bin -o=CalendarDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/OtpDemo.rgr -d=./gallery/ui/bin -o=OtpDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MetadataDemo.rgr -d=./gallery/ui/bin -o=MetadataDemo.cjs",
    "ui:sortable": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/ui/demo/SortableDemo.rgr -d=./gallery/ui/bin -o=SortableDemo.js -nodecli && node ./gallery/ui/bin/SortableDemo.js",
    "ui:toolbar": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/ui/demo/ToolbarDemo.rgr -d=./gallery/ui/bin -o=ToolbarDemo.js -nodecli && node ./gallery/ui/bin/ToolbarDemo.js",
    "ui:sortable:png": "npm run ui:demo:build && DEMO=sortable node gallery/ui/demo/render.mjs gallery/ui/demo/sortable.png",
    "ui:toolbar:png": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/MenubarDemo.rgr -d=./gallery/ui/bin -o=MenubarDemo.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/ui/demo/ToolbarDemo.rgr -d=./gallery/ui/bin -o=ToolbarDemo.cjs && DEMO=toolbar node gallery/ui/demo/render.mjs",
    "ui:demo:web": "npm run ui:web",
    "evg:flexgrow:oracle": "node gallery/ui/conformance/oracle/flexgrow_oracle.mjs",
    "evg:flexgrow:check": "npm run ui:demo:build --silent && node gallery/ui/conformance/oracle/flexgrow_check.mjs",
    "evg:pctflex:oracle": "node gallery/ui/conformance/oracle/pctflex_oracle.mjs",
    "evg:pctflex:check": "npm run ui:demo:build --silent && node gallery/ui/conformance/oracle/pctflex_check.mjs",
    "ui:layout:check": "npm run ui:demo:build --silent && node gallery/ui/demo/layout-check.mjs",
    "ui:layout:record": "npm run ui:demo:build --silent && node gallery/ui/demo/layout-check.mjs --record",
    "compiler:issue76:check": "node tests/compiler-issue-76-check.mjs",
    "evg:icons:dump": "mkdir -p tmp/icons/trace && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/evg/tools/icon_trace_dump.rgr -d=./gallery/evg/bin -o=icon_trace_dump.js -nodecli && node ./gallery/evg/bin/icon_trace_dump.js",
    "pptx:seam:test": "bash scripts/rgr-suite.sh ./gallery/pptx/tests/PptxSeamTest.rgr ./gallery/pptx/bin PptxSeamTest.js",
    "pptx:seam:scan": "node gallery/pptx/tools/seam_scan.mjs",
    "evg:color:oracle": "node gallery/ui/conformance/oracle/color_oracle.mjs",
    "evg:color:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/color_check.mjs",
    "evg:advance:oracle": "node gallery/ui/conformance/oracle/advance_oracle.mjs",
    "evg:advance:check": "npm run ui:build --silent && node gallery/ui/conformance/oracle/advance_check.mjs",
    "rt:parser:sync": "node gallery/realtrainer/scripts/sync-parser.mjs",
    "rt:parser:check": "node gallery/realtrainer/scripts/sync-parser.mjs --check",
    "mfiles:vault:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/mfiles/tests/VaultTest.rgr -d=./gallery/mfiles/bin -o=VaultTest.js -nodecli && node ./gallery/mfiles/bin/VaultTest.js",
    "mfiles:grpc:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/mfiles/tests/GrpcTest.rgr -d=./gallery/mfiles/bin -o=GrpcTest.js -nodecli && node ./gallery/mfiles/bin/GrpcTest.js",
    "mfiles:engine:test": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/mfiles/tests/EngineSmoke.rgr -d=./gallery/mfiles/bin -o=EngineSmoke.js -nodecli && node ./gallery/mfiles/bin/EngineSmoke.js",
    "mfiles:uix:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/mfiles/src/uix/MfUixHost.rgr -d=./gallery/mfiles/bin -o=MfUixHost.cjs",
    "mfiles:uix:test": "npm run mfiles:uix:build --silent && node gallery/mfiles/tests/uix-check.mjs",
    "mfiles:bench": "npm run mfiles:uix:build --silent && node gallery/mfiles/tests/uix-bench.mjs",
    "mfiles:test": "npm run mfiles:vault:test --silent && npm run mfiles:grpc:test --silent && npm run mfiles:engine:test --silent && npm run mfiles:uix:test --silent && npm run mfiles:web:check --silent",
    "mfiles:web:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/mfiles/web/MfilesApp.rgr -d=./gallery/mfiles/bin -o=MfilesApp.cjs",
    "mfiles:web:check": "npm run mfiles:web:build --silent && node gallery/mfiles/tests/app-check.mjs",
    "mfiles:web:page": "npm run mfiles:web:build --silent && node gallery/mfiles/web/build.mjs",
    "mfiles:web": "npm run mfiles:web:page --silent && node gallery/mfiles/web/serve.mjs",
    "firesim:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/firesim/src/FsSimBridge.rgr -d=./gallery/firesim/bin -o=FsSimBridge.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/firesim/src/FsClient.rgr -d=./gallery/firesim/bin -o=FsClient.cjs",
    "firesim:test": "npm run firesim:build --silent && node gallery/firesim/tests/firesim-check.mjs",
    "firesim:targets": "node gallery/firesim/tests/targets-check.mjs",
    "firesim:size": "npm run firesim:build --silent && node gallery/firesim/tests/size-check.mjs",
    "firesim:realtrainer": "npm run firesim:build --silent && npm run rt:build --silent && node gallery/firesim/tests/realtrainer-check.mjs",
    "firesim:demo:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/firesim/demo/FiresimConsole.rgr -d=./gallery/firesim/bin -o=FiresimConsole.cjs",
    "firesim:demo": "npm run firesim:demo:build --silent && node gallery/firesim/tests/console-check.mjs",
    "firesim:demo:page": "npm run firesim:demo:build --silent && node gallery/firesim/demo/build.mjs",
    "firesim:demo:frame": "npm run firesim:demo:page --silent && node gallery/firesim/tests/page-render-check.mjs",
    "firesim:demo:shots": "npm run firesim:demo:page --silent && node gallery/firesim/tests/page-render-check.mjs --shots gallery/firesim/demo/shots",
    "firesim:demo:web": "npm run firesim:demo:page --silent && node gallery/firesim/demo/serve.mjs",
    "firesim:serve": "npm run firesim:build --silent && node gallery/firesim/host/serve.mjs",
    "rt:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr:./lib node bin/output.js -es6 -nodemodule ./gallery/realtrainer/src/RtHost.rgr -d=./gallery/realtrainer/bin -o=RealTrainerDemo.cjs",
    "rt:compact:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/realtrainer/src/CompactRows.rgr -d=./gallery/realtrainer/bin -o=CompactRows.cjs",
    "statechart:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/statechart/src/Statechart.rgr -d=./gallery/statechart/bin -o=Statechart.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/statechart/src/StatechartJson.rgr -d=./gallery/statechart/bin -o=StatechartJson.cjs",
    "statechart:viz:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 ./gallery/statechart/demo/statechart_viz.rgr -d=./gallery/statechart/bin -o=statechart_viz.js -nodecli",
    "statechart:viz": "npm run statechart:viz:build --silent && node ./gallery/statechart/bin/statechart_viz.js",
    "statechart:parity": "npm run statechart:build --silent && node gallery/statechart/tests/xstate-parity.mjs",
    "statechart:viz:check": "npm run statechart:viz:build --silent && node gallery/statechart/tests/viz-check.mjs",
    "statechart:test": "npm run statechart:parity --silent && npm run statechart:viz:check --silent",
    "rt:machine:build": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/statechart/src/Statechart.rgr -d=./gallery/statechart/bin -o=Statechart.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/realtrainer/src/AddWorkoutDialog.rgr -d=./gallery/realtrainer/bin -o=AddWorkoutDialog.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/realtrainer/src/AddWorkoutChart.rgr -d=./gallery/realtrainer/bin -o=AddWorkoutChart.cjs && RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr node bin/output.js -es6 -nodemodule ./gallery/statechart/src/StatechartJson.rgr -d=./gallery/statechart/bin -o=StatechartJson.cjs",
    "rt:machine": "npm run rt:machine:build --silent && node gallery/realtrainer/web/machine-check.mjs",
    "rt:machine:live": "npm run statechart:build --silent && node gallery/statechart/tests/xstate-parity.mjs --manifest gallery/realtrainer/fixtures/machines/manifest.mjs",
    "rt:machine:config": "node gallery/realtrainer/scripts/check-machine-config.mjs",
    "rt:bench": "npm run rt:build --silent && node gallery/realtrainer/web/bench.mjs",
    "evg:a11y:paint": "node gallery/evg/gl/a11y-paint-check.mjs",
    "rt:add": "npm run rt:build --silent && node gallery/realtrainer/web/add-check.mjs",
    "rt:scroll": "npm run rt:build --silent && node gallery/realtrainer/web/scroll-check.mjs",
    "rt:theme": "npm run rt:build --silent && node gallery/realtrainer/web/theme-check.mjs",
    "rt:clock": "npm run rt:build --silent && node gallery/realtrainer/web/clock-check.mjs",
    "rt:keys": "npm run rt:build --silent && node gallery/realtrainer/web/keys-check.mjs",
    "rt:svg": "npm run rt:build --silent && node gallery/realtrainer/web/shot-svg.mjs --themes",
    "rt:trace": "npm run rt:build --silent && node gallery/realtrainer/web/trace-check.mjs",
    "rt:trace:record": "npm run rt:build --silent && node gallery/realtrainer/web/trace-check.mjs --record",
    "rt:trace:diff": "node gallery/realtrainer/web/trace-diff.mjs",
    "rt:trace:reference": "node gallery/realtrainer/scripts/record-reference-trace.mjs",
    "rt:compact": "npm run rt:compact:build --silent && node gallery/realtrainer/web/compact-check.mjs",
    "rt:l0": "npm run rt:compact:build --silent && node gallery/realtrainer/web/l0-check.mjs",
    "rt:l0:record": "npm run rt:compact:build --silent && node gallery/realtrainer/oracle/record.mjs",
    "rt:coverage": "npm run rt:compact:build --silent && node gallery/realtrainer/scripts/coverage.mjs",
    "rt:coverage:check": "npm run rt:compact:build --silent && node gallery/realtrainer/scripts/coverage.mjs --check",
    "rt:check": "npm run rt:build --silent && node gallery/realtrainer/web/loader-check.mjs",
    "rt:evg": "RANGER_LIB=./compiler/Lang.rgr:./lib/stdops.rgr:./lib node bin/output.js -es6 ./gallery/realtrainer/src/rt_evg_dump.rgr -d=./gallery/realtrainer/bin -o=rt_evg_dump.js -nodecli && node ./gallery/realtrainer/bin/rt_evg_dump.js",
    "rt:fig": "npm run --silent rt:evg -- / gallery/realtrainer/out/home.evg.json && npm run --silent rt:evg -- rt-nav-calendar gallery/realtrainer/out/calendar.evg.json && npm run --silent rt:evg -- rt-nav-dashboard gallery/realtrainer/out/dashboard.evg.json && npm run --silent rt:evg -- rt-nav-chat gallery/realtrainer/out/chat.evg.json && npm run --silent figma:cli:build && node gallery/figma/bin/fig_cli.js pack gallery/realtrainer/out/realtrainer.fig 430 932 gallery/realtrainer/out/home.evg.json gallery/realtrainer/out/calendar.evg.json gallery/realtrainer/out/dashboard.evg.json gallery/realtrainer/out/chat.evg.json",
    "rt:page": "npm run rt:build --silent && node gallery/realtrainer/web/build.mjs",
    "rt:dom": "npm run rt:page --silent && node gallery/realtrainer/web/dom-check.mjs",
    "rt:shot:sync": "npm run rt:build --silent && node gallery/realtrainer/web/snapshot.mjs",
    "rt:shot:check": "npm run rt:build --silent && node gallery/realtrainer/web/snapshot.mjs --check",
    "rt:shell": "npm run rt:page --silent && node gallery/realtrainer/web/shell-check.mjs",
    "rt:boot": "npm run rt:page --silent && node gallery/evg/web/tools/boot-bench.mjs --url gallery/realtrainer/web/index.html --variant 'engine on this thread=?engine=main' --variant 'engine in a Worker=?engine=worker'",
    "rt:shaken": "npm run rt:page --silent && node gallery/realtrainer/web/shaken-check.mjs",
    "rt:sheet": "npm run rt:build --silent && node gallery/realtrainer/web/sheet-check.mjs",
    "rt:split": "npm run rt:page --silent && node gallery/realtrainer/web/split-check.mjs",
    "hosts:verify": "bash gallery/realtrainer/ios/scripts/verify.sh && bash gallery/realtrainer/android/scripts/verify.sh && bash gallery/ui/ios/scripts/verify.sh",
    "rt:node": "npm run rt:build --silent && node gallery/realtrainer/web/loader-check.mjs && node gallery/realtrainer/web/add-check.mjs && node gallery/realtrainer/web/scroll-check.mjs && node gallery/realtrainer/web/theme-check.mjs && node gallery/realtrainer/web/clock-check.mjs && node gallery/realtrainer/web/keys-check.mjs && node gallery/realtrainer/web/sheet-check.mjs",
    "rt:frame": "npm run rt:page --silent && node gallery/realtrainer/web/frame-check.mjs && node gallery/realtrainer/web/frame-check.mjs --engine worker",
    "rt:shots": "npm run rt:page --silent && node gallery/realtrainer/web/frame-check.mjs --png gallery/realtrainer/web/shots/realtrainer.png",
    "rt:web": "npm run rt:page --silent && node gallery/realtrainer/web/serve.mjs",
    "rt:ios": "bash gallery/realtrainer/ios/scripts/build-app.sh",
    "rt:ios:run": "bash gallery/realtrainer/ios/scripts/build-app.sh --run",
    "rt:ios:device": "bash gallery/realtrainer/ios/scripts/build-app.sh --target=ios-device --run",
    "rt:ios:device:console": "bash gallery/realtrainer/ios/scripts/build-app.sh --target=ios-device --run --console",
    "rt:ios:check": "bash gallery/realtrainer/ios/scripts/build-app.sh --check",
    "rt:ios:plan": "bash gallery/realtrainer/ios/scripts/build-app.sh --dry-run",
    "rt:ios:verify": "bash gallery/realtrainer/ios/scripts/verify.sh",
    "rt:ios:swift": "bash gallery/realtrainer/ios/scripts/build-ranger.sh",
    "rt:android": "bash gallery/realtrainer/android/scripts/build-app.sh debug",
    "rt:android:run": "bash gallery/realtrainer/android/scripts/run-emulator.sh",
    "rt:android:ranger": "bash gallery/realtrainer/android/scripts/build-ranger.sh",
    "rt:android:assets": "bash gallery/realtrainer/android/scripts/prepare-assets.sh",
    "rt:android:verify": "bash gallery/realtrainer/android/scripts/verify.sh",
    "rt:android:desktop": "bash gallery/realtrainer/android/scripts/verify-desktop.sh",
    "rt:android:typecheck": "bash gallery/realtrainer/android/scripts/typecheck-host.sh",
    "rt:sdl": "bash gallery/realtrainer/platform/sdl/build.sh",
    "rt:sdl:ranger": "bash gallery/realtrainer/platform/sdl/build.sh --ranger",
    "rt:sdl:run": "bash gallery/realtrainer/platform/sdl/build.sh --run",
    "rt:sdl:smoke": "bash gallery/realtrainer/platform/sdl/build.sh && SDL_VIDEODRIVER=dummy ./tmp/rt-sdl/rt_sdl --frames 30 --today 2026-02-09"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/terotests/Ranger.git"
  },
  "keywords": [
    "Compiler"
  ],
  "author": "Tero Tolonen",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/terotests/Ranger/issues"
  },
  "homepage": "https://github.com/terotests/Ranger#readme",
  "devDependencies": {
    "@types/node": "^22.19.2",
    "cross-env": "^10.1.0",
    "openfig-core": "^0.4.1",
    "playwright-core": "^1.62.1",
    "typescript": "^5.9.3",
    "vitest": "^3.2.7",
    "wabt": "^1.0.39"
  },
  "overrides": {
    "vite": "^6.4.3",
    "esbuild": "^0.25.0",
    "rollup": "^4.59.0",
    "postcss": "^8.5.23",
    "nanoid": "^3.3.17"
  },
  "optionalDependencies": {
    "@duckdb/node-api": "^1.5.5-r.4"
  }
}
