################################################################################
#                                                                              #
#                              .gitignore                                      #
#                                                                              #
#  This file ignores EVERYTHING by default and explicitly includes only the    #
#  files and directories required for the project.                             #
#  To add an exception, use the "!" prefix before the path.                    #
#                                                                              #
################################################################################

# ======================
# === Global Ignore  ===
# ======================
*

# ======================
# ===   Exceptions   ===
# ======================
!README.md
!LICENSE.md
!CODE_OF_CONDUCT.md
!CHANGELOG.md
!CONTRIBUTING.md
!CONTRIBUTORS.md
!ROADMAP.md
!SECURITY.md

# Core project files
!Project.toml
!Artifacts.toml
!.github/
!.github/**
!.codecov.yml

# Source code
!src/
!src/**

# Documentation
!docs/
!docs/**

# Tests
!test/
!test/*/
!test/**/*.jl
!test/fixtures/
!test/fixtures/*.jl

# Examples
!examples/
!examples/**

# Benchmarks (exclude JSON results)
!benchmark/
!benchmark/**
benchmark/*.json

# Exception for tests
!test/
!test/*/
!test/**/*.jl

# Test fixtures (scripts and JSON data)
!test/fixtures/
!test/fixtures/*.jl
!test/fixtures/*.json
!test/fixtures/type_definitions/
!test/fixtures/type_definitions/*.json
!test/fixtures/schemas/
!test/fixtures/schemas/*.json

# Scripts
!scripts/
!scripts/**

# Specifications
!specs/
!specs/**

# Interoperability tests
!test/interop/
!test/interop/**/*.jl

# Exception for examples
!examples/
!examples/**

# Exception for benchmarks (exclude JSON results)
!benchmark/
!benchmark/**
benchmark/*.json

# Exception for Project.toml
!Project.toml

# Exception for Github Actions
!.github/
!.github/**

# ==============================
# === Julia-Specific Ignores ===
# ==============================
# Build artifacts
/*.tar.gz
/tmp
/dist
/dist-extras
/julia
/julia.bat
/usr
/oprofile_data
/usr-staging
/Make.user
/julia-*
/deps/jlutilities/depot
/source-dist.tmp
/source-dist.tmp1

# Test results
/test/results_*.json
/test/results_*.dat
/test/deps

# Compiled files
*.expmap
*.exe
*.dll
*.dwo
*.do
*.o
*.o.tmp
*.obj
*.so
*.dylib
*.dSYM
*.h.gen
*.jl.cov
*.jl.*.cov
*.jl.mem
*.jl.*.mem
*.ji

# Performance files
/perf*

# ===============================
# === IDE/OS-Specific Ignores ===
# ===============================
# macOS
.DS_Store

# IDEs
.idea/*
.vscode/*
.zed/*
*.heapsnapshot
.cache

# ==================================
# === Buildkite-Specific Ignores ===
# ==================================
# Buildkite directory
/.buildkite

# Buildkite test data
/test/results.json

# Buildkite keys
repo_key
agent_key*

# ===========================
# === Documentation Build ===
# ===========================
# Generated documentation
docs/build/
docs/Manifest.toml
