# Node.js
**/node

# Python
**/*.pyc

**/.apt_generated
# Logs
logs
*.log
*.log.*
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/
dist/
dist10/

# TypeScript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# next.js build output
.next

# nuxt.js build output
.nuxt

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# Microservices

.classpath
.settings/

# Target dirs in all projects
**/target-ide/*
**/target/*
**/logs/*
**/tokens/*
**/lib/cachedir/**

# Added for Intellij IDEA IDE
**/*.ipr
**/*.iws
**/debug-logs/*
**/.idea/*
**/*.iml
**/*.project
**/.springBeans
**/.factorypath
**/.directory

**/transaction.log
**/*versionsBackup
**/blackDuckHub*
**/*.jsonld
**/.checkstyle

**/*.log
**/*py.class
**/.DS_Store

# To Remove Kotlin Script Generated Jars
**/*cba-kts.jar

# Added for Intellij IDEA IDE
**/*.ipr
**/*.iws
**/debug-logs/*
**/.idea/*
**/*.iml
**/*.project
**/.springBeans

# Target dirs in all projects
**/target-ide/*
**/target/*
**/logs/*
**/tokens/*

# Public site
cds-ui/server/public

# Python generated class
**/*py.class
**/venv

MacOS
**/.DS_Store

# To Remove Kotlin Script Generated Jars
**/*cba-kts.jar
**/application/blueprints
/target/

# Generated dependency list
direct-dependencies.txt
