Skip to content

Commit 2a1c426

Browse files
committed
init project evolution api
0 parents  commit 2a1c426

File tree

90 files changed

+9820
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+9820
-0
lines changed

.dockerignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.git
2+
*Dockerfile*
3+
*docker-compose*
4+
node_modules
5+
dist

.eslintignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/node-modules
2+
/dist

.eslintrc.js

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
module.exports = {
2+
parser: '@typescript-eslint/parser',
3+
parserOptions: {
4+
sourceType: 'CommonJS',
5+
},
6+
plugins: ['@typescript-eslint/eslint-plugin'],
7+
extends: [
8+
'plugin:@typescript-eslint/recommended',
9+
'plugin:prettier/recommended',
10+
'plugin:prettier/recommended'
11+
],
12+
globals: {
13+
Atomics: 'readonly',
14+
SharedArrayBuffer: 'readonly',
15+
},
16+
root: true,
17+
env: {
18+
node: true,
19+
jest: true,
20+
},
21+
ignorePatterns: ['.eslintrc.js'],
22+
rules: {
23+
'@typescript-eslint/interface-name-prefix': 'off',
24+
'@typescript-eslint/explicit-function-return-type': 'off',
25+
'@typescript-eslint/explicit-module-boundary-types': 'off',
26+
'@typescript-eslint/no-explicit-any': 'off',
27+
'@typescript-eslint/no-empty-function': 'off',
28+
'@typescript-eslint/no-non-null-assertion': 'off',
29+
'@typescript-eslint/no-unused-vars': 'off',
30+
'@typescript-eslint/ban-types': [
31+
'error',
32+
{
33+
extendDefaults: true,
34+
types: {
35+
'{}': false,
36+
Object: false,
37+
},
38+
},
39+
],
40+
'prettier/prettier': ['error', { endOfLine: 'auto' }],
41+
},
42+
};

.gitignore

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# compiled output
2+
/dist
3+
/node_modules
4+
5+
# Logs
6+
logs/**.json
7+
*.log
8+
npm-debug.log*
9+
pnpm-debug.log*
10+
yarn-debug.log*
11+
yarn-error.log*
12+
lerna-debug.log*
13+
14+
# Package
15+
/yarn.lock
16+
/package-lock.json
17+
18+
# IDE - VSCode
19+
.vscode/*
20+
!.vscode/settings.json
21+
!.vscode/tasks.json
22+
!.vscode/launch.json
23+
!.vscode/extensions.json
24+
25+
# Prisma
26+
/prisma/migrations
27+
28+
# Project related
29+
/instances/*
30+
!/instances/.gitkeep
31+
/test/
32+
/src/env.yml

.prettierrc.js

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module.exports = {
2+
semi: true,
3+
trailingComma: 'all',
4+
singleQuote: true,
5+
printWidth: 90,
6+
tabWidth: 2,
7+
bracketSameLine: true,
8+
bracketSpacing: true
9+
}

.vscode/settings.json

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"editor.fontSize": 13,
3+
"editor.fontLigatures": true,
4+
"editor.letterSpacing": 0.5,
5+
"editor.smoothScrolling": true,
6+
"editor.tabSize": 2,
7+
"editor.codeActionsOnSave": {
8+
"source.fixAll.eslint": true,
9+
"source.fixAll": true
10+
}
11+
}

Docker/.env

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
CORS_ORIGIN='*' # Or separate by commas - ex.: 'yourdomain1.com, yourdomain2.com'
2+
CORS_METHODS='POST,GET,PUT,DELETE'
3+
CORS_CREDENTIALS=true
4+
5+
# Determine the logs to be displayed
6+
LOG_LEVEL='ERROR,WARN,DEBUG,INFO,LOG,VERBOSE,DARK'
7+
LOG_COLOR=true
8+
9+
# Determine how long the instance should be deleted from memory in case of no connection.
10+
# Default time: 5 minutes
11+
# If you don't even want an expiration, enter the value false
12+
DEL_INSTANCE=5
13+
14+
# Temporary data storage
15+
STORE_CLEANING_INTERVAL=7200 # seconds ===2h
16+
STORE_MESSAGE=true
17+
STORE_CONTACTS=false
18+
STORE_CHATS=false
19+
20+
# Permanent data storage
21+
DATABASE_ENABLED=false
22+
DATABASE_CONNECTION_URI='<uri>'
23+
DATABASE_CONNECTION_DB_PREFIX_NAME='evolution'
24+
DATABASE_SAVE_DATA_INSTANCE=false
25+
DATABASE_SAVE_DATA_OLD_MESSAGE=false
26+
DATABASE_SAVE_DATA_NEW_MESSAGE=true
27+
DATABASE_SAVE_MESSAGE_UPDATE=true
28+
DATABASE_SAVE_DATA_CONTACTS=true
29+
DATABASE_SAVE_DATA_CHATS=true
30+
31+
REDIS_ENABLED=true
32+
REDIS_URI='<uri>/1'
33+
REDIS_PREFIX_KEY='evolution'
34+
35+
# Webhook Settings
36+
## Define a global webhook that will listen for enabled events from all instances
37+
WEBHOOK_GLOBAL_URL='<url>'
38+
WEBHOOK_GLOBAL_ENABLED=false
39+
WEBHOOK_GLOBAL_WEBHOOK_BY_EVENTS=false
40+
## Set the events you want to hear
41+
WEBHOOK_EVENTS_STATUS_INSTANCE=true
42+
WEBHOOK_EVENTS_APPLICATION_STARTUP=true
43+
WEBHOOK_EVENTS_QRCODE_UPDATED=true
44+
WEBHOOK_EVENTS_MESSAGES_SET=true
45+
WEBHOOK_EVENTS_MESSAGES_UPDATE=true
46+
WEBHOOK_EVENTS_MESSAGES_UPSERT=true
47+
WEBHOOK_EVENTS_SEND_MESSAGE=true
48+
WEBHOOK_EVENTS_CONTACTS_SET=true
49+
WEBHOOK_EVENTS_CONTACTS_UPSERT=true
50+
WEBHOOK_EVENTS_CONTACTS_UPDATE=true
51+
WEBHOOK_EVENTS_PRESENCE_UPDATE=true
52+
WEBHOOK_EVENTS_CHATS_SET=true
53+
WEBHOOK_EVENTS_CHATS_UPSERT=true
54+
WEBHOOK_EVENTS_CHATS_UPDATE=true
55+
WEBHOOK_EVENTS_CONNECTION_UPDATE=true
56+
WEBHOOK_EVENTS_GROUPS_UPSERT=false
57+
WEBHOOK_EVENTS_GROUPS_UPDATE=false
58+
WEBHOOK_EVENTS_GROUP_PARTICIPANTS_UPDATE=false
59+
## This event fires every time a new token is requested via the refresh route
60+
WEBHOOK_EVENTS_NEW_JWT_TOKEN=true
61+
62+
CONFIG_SESSION_PHONE_CLIENT='Evolution API'
63+
CONFIG_SESSION_PHONE_NAME='Chrome'
64+
65+
# Set qrcode display limit
66+
QRCODE_LIMIT=6
67+
68+
# Defines an authentication type for the api
69+
AUTHENTICATION_TYPE='jwt' # or 'apikey'
70+
## Define a global apikey to access all instances.
71+
### OBS: This key must be inserted in the request header to create an instance.
72+
AUTHENTICATION_API_KEY='t8OOEeISKzpmc3jjcMqBWYSaJsafdefer'
73+
## Set the secret key to encrypt and decrypt your token and its expiration time
74+
AUTHENTICATION_JWT_EXPIRIN_IN=3600 # seconds - 3600s ===1h | zero (0) - never expires
75+
AUTHENTICATION_JWT_SECRET='L0YWtjb2w554WFqPG'
76+
77+
AUTHENTICATION_INSTANCE_NAME='evolution'
78+
AUTHENTICATION_INSTANCE_WEBHOOK_URL='<url>'
79+
AUTHENTICATION_INSTANCE_MODE='container' # or 'server'
80+
AUTHENTICATION_INSTANCE_WEBHOOK_BY_EVENTS=false

Dockerfile

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
FROM node:16.18-alpine
2+
3+
RUN apk update && apk upgrade && \
4+
apk add --no-cache git
5+
6+
WORKDIR /evolution
7+
8+
COPY ./package.json .
9+
10+
ENV DOCKER_ENV=true
11+
12+
ENV TZ=America/Sao_Paulo
13+
14+
ENV CORS_ORIGIN="*"
15+
ENV CORS_METHODS="POST,GET,PUT,DELETE"
16+
ENV CORS_CREDENTIALS=true
17+
18+
ENV LOG_LEVEL="ERROR,WARN,DEBUG,INFO,LOG,VERBOSE,DARK"
19+
ENV LOG_COLOR=true
20+
21+
ENV DEL_INSTANCE=false
22+
23+
ENV STORE_CLEANING_INTERVAL=7200
24+
ENV STORE_MESSAGE=true
25+
ENV STORE_CONTACTS=true
26+
ENV STORE_CHATS=true
27+
28+
ENV DATABASE_ENABLED=$DATABASE_ENABLED
29+
ENV DATABASE_CONNECTION_URI=$DATABASE_CONNECTION_URI
30+
ENV DATABASE_CONNECTION_DB_PREFIX_NAME=$DATABASE_CONNECTION_DB_PREFIX_NAME
31+
ENV DATABASE_SAVE_DATA_INSTANCE=false
32+
ENV DATABASE_SAVE_DATA_OLD_MESSAGE=false
33+
ENV DATABASE_SAVE_DATA_NEW_MESSAGE=true
34+
ENV DATABASE_SAVE_MESSAGE_UPDATE=false
35+
ENV DATABASE_SAVE_DATA_CONTACTS=true
36+
ENV DATABASE_SAVE_DATA_CHATS=true
37+
38+
ENV REDIS_ENABLED=$REDIS_ENABLED
39+
ENV REDIS_URI=$REDIS_URI
40+
41+
ENV WEBHOOK_GLOBAL_URL=$WEBHOOK_GLOBAL_URL
42+
ENV WEBHOOK_GLOBAL_ENABLED=true
43+
ENV WEBHOOK_GLOBAL_WEBHOOK_BY_EVENTS=$WEBHOOK_GLOBAL_WEBHOOK_BY_EVENTS
44+
45+
ENV WEBHOOK_EVENTS_STATUS_INSTANCE=true
46+
ENV WEBHOOK_EVENTS_APPLICATION_STARTUP=true
47+
ENV WEBHOOK_EVENTS_QRCODE_UPDATED=true
48+
ENV WEBHOOK_EVENTS_MESSAGES_SET=true
49+
ENV WEBHOOK_EVENTS_MESSAGES_UPDATE=true
50+
ENV WEBHOOK_EVENTS_MESSAGES_UPSERT=true
51+
ENV WEBHOOK_EVENTS_SEND_MESSAGE=true
52+
ENV WEBHOOK_EVENTS_CONTACTS_SET=true
53+
ENV WEBHOOK_EVENTS_CONTACTS_UPSERT=true
54+
ENV WEBHOOK_EVENTS_CONTACTS_UPDATE=true
55+
ENV WEBHOOK_EVENTS_PRESENCE_UPDATE=true
56+
ENV WEBHOOK_EVENTS_CHATS_SET=true
57+
ENV WEBHOOK_EVENTS_CHATS_UPSERT=true
58+
ENV WEBHOOK_EVENTS_CHATS_UPDATE=true
59+
ENV WEBHOOK_EVENTS_CONNECTION_UPDATE=true
60+
ENV WEBHOOK_EVENTS_GROUPS_UPSERT=true
61+
ENV WEBHOOK_EVENTS_GROUPS_UPDATE=true
62+
ENV WEBHOOK_EVENTS_GROUP_PARTICIPANTS_UPDATE=true
63+
64+
ENV WEBHOOK_EVENTS_NEW_JWT_TOKEN=true
65+
66+
ENV CONFIG_SESSION_PHONE_CLIENT="Evolution API"
67+
ENV CONFIG_SESSION_PHONE_NAME="Chrome"
68+
69+
ENV QRCODE_LIMIT=30
70+
71+
ENV AUTHENTICATION_TYPE="apikey"
72+
73+
ENV AUTHENTICATION_API_KEY=$AUTHENTICATION_API_KEY
74+
75+
ENV AUTHENTICATION_JWT_EXPIRIN_IN=0
76+
ENV AUTHENTICATION_JWT_SECRET="L0YWtjb2w554WFqPG"
77+
78+
ENV AUTHENTICATION_INSTANCE_NAME=$AUTHENTICATION_INSTANCE_NAME
79+
ENV AUTHENTICATION_INSTANCE_WEBHOOK_URL=$AUTHENTICATION_INSTANCE_WEBHOOK_URL
80+
ENV AUTHENTICATION_INSTANCE_MODE=$AUTHENTICATION_INSTANCE_MODE
81+
ENV AUTHENTICATION_INSTANCE_WEBHOOK_BY_EVENTS=$AUTHENTICATION_INSTANCE_WEBHOOK_BY_EVENTS
82+
83+
RUN npm install
84+
85+
COPY . .
86+
87+
RUN npm run build
88+
89+
CMD [ "node", "./dist/src/main.js" ]

0 commit comments

Comments
 (0)