# 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

# Added for Visual Studio Code
.vscode

**/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
