# Dependencies
node_modules/

# Build output
dist/
build/
*.tsbuildinfo

# Compiled library archives — the canonical source of truth lives in
# libs/sources/<lib-name>/ (.st files + library.json for hand-authored
# libs; .library binary + library.json for codesys-imported libs). The
# .stlib archives are produced by `npm run build` from those sources,
# so tracking them in git would just create stale-blob churn on every
# library or compiler change. Build flow:
#   npm install && npm run build   →  generates libs/*.stlib
# CI rebuilds them before tests via vitest globalSetup; release jobs
# rebuild them as part of `npm run build`.
libs/*.stlib
# iec-types.json is a similar build artefact: derived from
# `src/semantic/iec-types-data.ts` by `scripts/build-iec-types-json.mjs`,
# so tracking it would just produce churn whenever the metadata changes.
libs/iec-types.json
# Extension-side copy is also a build artifact (vscode-extension's
# esbuild.mjs syncs it from libs/ at vsix build time).
vscode-extension/bundled-libs/*.stlib
vscode-extension/bundled-libs/iec-types.json

# npm pack output — the release pipeline builds and publishes this; it must
# never be committed (a stray committed tarball leaks into release assets via
# the `strucpp-*.tgz` upload glob).
*.tgz

# IDE and editors
.vscode/
.idea/
*.swp
*.swo
*~

# OS files
.DS_Store
Thumbs.db

# Environment files
.env
.env.local
.env.*.local

# Test coverage
coverage/
.nyc_output/

# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Project specific - generated output files
generated/
output/

# Generated C++ files (but not runtime source headers)
*.cpp
*.o
*.a
*.exe

# Allow runtime source headers (these are source code, not generated)
!src/runtime/include/*.hpp
!src/runtime/include/*.h

# Allow runtime test files (these are source code, not generated)
!src/runtime/tests/*.cpp

# Test outputs
test_output/
golden_output/

# Chevrotain parser cache
.chevrotain_cache/

# C++ runtime build artifacts
runtime/build/
runtime/*.o
runtime/*.a

# Temporary files
tmp/
temp/
*.tmp

# REPL history
.strucpp_history

# Generated test output headers
tests/**/*.hpp
