# Node.js
**/node

# Python
**/*.pyc

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

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

**/*versionsBackup
**/blackDuckHub*
**/*.jsonld
**/.checkstyle
**/.gitignore

**/*.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
*/**/package-lock.json
cds-ui/server/public

# Python generated class
**/*py.class

MacOS
**/.DS_Store

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