orztv commited on
Commit
b1b5a32
·
1 Parent(s): ccc2013
.gitignore CHANGED
@@ -48,4 +48,6 @@ test_sakila_?.db
48
  /docker/nc-gui/
49
  /docker/public/
50
 
51
- /tests/unit/.env
 
 
 
48
  /docker/nc-gui/
49
  /docker/public/
50
 
51
+ /tests/unit/.env
52
+
53
+ Dockerfile copy
Dockerfile DELETED
@@ -1,72 +0,0 @@
1
- FROM nocodb/nocodb:latest
2
-
3
- ARG NC_S3_REGION
4
- ARG NC_S3_ENDPOINT
5
- ARG NC_S3_ACCESS_KEY
6
-
7
- # 创建数据目录、设置权限并安装 PostgreSQL 和 Redis
8
- RUN adduser -D -u 1000 nocodb && \
9
- mkdir -p /usr/app/data /run/postgresql /var/log/redis /var/log/postgresql /var/run/redis && \
10
- chown -R nocodb:nocodb /usr/app /usr/src/app /usr /run/postgresql /var/log/redis /var/log/postgresql /var/log && \
11
- apk add --no-cache postgresql postgresql-contrib redis && \
12
- echo "nocodb:nocodb_password" | chpasswd && \
13
- chown nocodb:nocodb /run/postgresql && \
14
- su - nocodb -c "initdb -D /usr/app/data/pgdata" && \
15
- echo "host all all 0.0.0.0/0 md5" >> /usr/app/data/pgdata/pg_hba.conf && \
16
- echo "listen_addresses='*'" >> /usr/app/data/pgdata/postgresql.conf && \
17
- sed -i 's/# requirepass foobared/requirepass redis_password/' /etc/redis.conf && \
18
- sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf && \
19
- sed -i 's/dir .\//dir \/usr\/app\/data\//' /etc/redis.conf && \
20
- sed -i 's/logfile ""/logfile "\/var\/log\/redis\/redis.log"/' /etc/redis.conf && \
21
- sed -i 's/# unixsocket/unixsocket/' /etc/redis.conf && \
22
- sed -i 's/# unixsocketperm 700/unixsocketperm 777/' /etc/redis.conf && \
23
- echo "pidfile /var/run/redis/redis.pid" >> /etc/redis.conf && \
24
- chmod 644 /etc/redis.conf && \
25
- chown -R nocodb:nocodb /etc/redis.conf /var/log/redis /var/run/redis /usr/app/data /var/lib/redis && \
26
- apk add --update --no-cache dasel dumb-init nodejs
27
-
28
- # 使用 secret 获取 S3 bucket 名称和访问密钥
29
- RUN --mount=type=secret,id=NC_S3_BUCKET_NAME,mode=0444,required=true \
30
- --mount=type=secret,id=NC_S3_ACCESS_SECRET,mode=0444,required=true \
31
- echo "export NC_S3_BUCKET_NAME=$(cat /run/secrets/NC_S3_BUCKET_NAME)" >> /etc/profile.d/s3_env.sh && \
32
- echo "export NC_S3_ACCESS_SECRET=$(cat /run/secrets/NC_S3_ACCESS_SECRET)" >> /etc/profile.d/s3_env.sh && \
33
- echo "export LITESTREAM_S3_BUCKET=$(cat /run/secrets/NC_S3_BUCKET_NAME)" >> /etc/profile.d/s3_env.sh && \
34
- echo "export LITESTREAM_S3_SECRET_ACCESS_KEY=$(cat /run/secrets/NC_S3_ACCESS_SECRET)" >> /etc/profile.d/s3_env.sh && \
35
- chmod +x /etc/profile.d/s3_env.sh
36
-
37
- # 复制启动脚本和 Node.js 示例程序并设置权限
38
- COPY docker/startup.sh /usr/src/appEntry/startup.sh
39
- RUN chmod +x /usr/src/appEntry/startup.sh
40
-
41
- # 切换到 nocodb 用户
42
- USER nocodb
43
-
44
- WORKDIR /usr/src/app
45
-
46
- # 设置环境变量,包括从 secret 获取的值
47
- ENV LITESTREAM_S3_SKIP_VERIFY=false \
48
- LITESTREAM_RETENTION=1440h \
49
- LITESTREAM_RETENTION_CHECK_INTERVAL=72h \
50
- LITESTREAM_SNAPSHOT_INTERVAL=24h \
51
- LITESTREAM_SYNC_INTERVAL=60s \
52
- NC_DOCKER=0.6 \
53
- NC_TOOL_DIR=/usr/app/data/ \
54
- NODE_ENV=production \
55
- NC_ALLOW_LOCAL_HOOKS=true \
56
- NC_REDIS_URL="redis://:redis_password@localhost:6379/4" \
57
- NC_S3_REGION=${NC_S3_REGION} \
58
- NC_S3_ENDPOINT=${NC_S3_ENDPOINT} \
59
- NC_S3_ACCESS_KEY=${NC_S3_ACCESS_KEY} \
60
- LITESTREAM_S3_REGION=${NC_S3_REGION} \
61
- LITESTREAM_S3_ENDPOINT=${NC_S3_ENDPOINT} \
62
- LITESTREAM_S3_ACCESS_KEY_ID=${NC_S3_ACCESS_KEY}
63
-
64
- # 从临时文件中读取 secret 值并设置为环境变量
65
- ENV $(source /etc/profile.d/s3_env.sh && env | grep '^S3_' | xargs)
66
-
67
- EXPOSE 8080
68
-
69
- ENTRYPOINT ["/usr/bin/dumb-init", "--"]
70
-
71
- # 运行启动脚本
72
- CMD ["/usr/src/appEntry/startup.sh"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Dockerfile-pgsql DELETED
@@ -1,51 +0,0 @@
1
- FROM nocodb/nocodb:latest
2
-
3
- # 创建数据目录、设置权限并安装 PostgreSQL 和 Redis
4
- RUN adduser -D -u 1000 nocodb && \
5
- mkdir -p /usr/app/data /run/postgresql /var/log/redis /var/log/postgresql /var/run/redis && \
6
- chown -R nocodb:nocodb /usr/app /usr/src/app /usr /run/postgresql /var/log/redis /var/log/postgresql /var/log && \
7
- apk add --no-cache postgresql postgresql-contrib redis && \
8
- echo "nocodb:nocodb_password" | chpasswd && \
9
- chown nocodb:nocodb /run/postgresql && \
10
- su - nocodb -c "initdb -D /usr/app/data/pgdata" && \
11
- echo "host all all 0.0.0.0/0 md5" >> /usr/app/data/pgdata/pg_hba.conf && \
12
- echo "listen_addresses='*'" >> /usr/app/data/pgdata/postgresql.conf && \
13
- sed -i 's/# requirepass foobared/requirepass redis_password/' /etc/redis.conf && \
14
- sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf && \
15
- sed -i 's/dir .\//dir \/usr\/app\/data\//' /etc/redis.conf && \
16
- sed -i 's/logfile ""/logfile "\/var\/log\/redis\/redis.log"/' /etc/redis.conf && \
17
- sed -i 's/# unixsocket/unixsocket/' /etc/redis.conf && \
18
- sed -i 's/# unixsocketperm 700/unixsocketperm 777/' /etc/redis.conf && \
19
- echo "pidfile /var/run/redis/redis.pid" >> /etc/redis.conf && \
20
- chmod 644 /etc/redis.conf && \
21
- chown -R nocodb:nocodb /etc/redis.conf /var/log/redis /var/run/redis /usr/app/data /var/lib/redis && \
22
- apk add --update --no-cache dasel dumb-init nodejs
23
-
24
- # 复制启动脚本和 Node.js 示例程序并设置权限
25
- COPY docker/startup.sh /usr/src/appEntry/startup.sh
26
- COPY docker/app.js /usr/src/app/docker/app.js
27
- RUN chmod +x /usr/src/appEntry/startup.sh
28
-
29
- # 切换到 nocodb 用户
30
- USER nocodb
31
-
32
- WORKDIR /usr/src/app
33
-
34
- ENV LITESTREAM_S3_SKIP_VERIFY=false \
35
- LITESTREAM_RETENTION=1440h \
36
- LITESTREAM_RETENTION_CHECK_INTERVAL=72h \
37
- LITESTREAM_SNAPSHOT_INTERVAL=24h \
38
- LITESTREAM_SYNC_INTERVAL=60s \
39
- NC_DOCKER=0.6 \
40
- NC_TOOL_DIR=/usr/app/data/ \
41
- NODE_ENV=production \
42
- PORT=8080 \
43
- NC_ALLOW_LOCAL_HOOKS=true \
44
- NC_DB="pg://localhost:5432?u=nocodb&p=nocodb_password&d=nocodb" \
45
- NC_REDIS_URL="redis://:redis_password@localhost:6379/4"
46
-
47
- EXPOSE 8080 5432 6379 7860
48
- ENTRYPOINT ["/usr/bin/dumb-init", "--"]
49
-
50
- # 运行启动脚本
51
- CMD ["/usr/src/appEntry/startup.sh"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.md DELETED
@@ -1,12 +0,0 @@
1
- ---
2
- title: Supabase
3
- emoji: 📚
4
- colorFrom: gray
5
- colorTo: red
6
- sdk: docker
7
- pinned: false
8
- app_port: 8080
9
- ---
10
-
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
12
-
 
 
 
 
 
 
 
 
 
 
 
 
 
docker/litestream.yml DELETED
@@ -1,22 +0,0 @@
1
- # Docs: https://litestream.io/reference/config/
2
-
3
- dbs:
4
- - path: ${NC_TOOL_DIR}noco.db
5
- replicas:
6
- - type: s3
7
- endpoint: ${LITESTREAM_S3_ENDPOINT}
8
- region: ${LITESTREAM_S3_REGION}
9
- skip-verify: ${LITESTREAM_S3_SKIP_VERIFY}
10
- bucket: ${LITESTREAM_S3_BUCKET}
11
- path: ${LITESTREAM_S3_PATH}
12
- access-key-id: ${LITESTREAM_S3_ACCESS_KEY_ID}
13
- secret-access-key: ${LITESTREAM_S3_SECRET_ACCESS_KEY}
14
- retention: ${LITESTREAM_RETENTION}
15
- retention-check-interval: ${LITESTREAM_RETENTION_CHECK_INTERVAL}
16
- snapshot-interval: ${LITESTREAM_SNAPSHOT_INTERVAL}
17
- sync-interval: ${LITESTREAM_SYNC_INTERVAL}
18
- # age:
19
- # identities:
20
- # - ${LITESTREAM_AGE_SECRET_KEY}
21
- # recipients:
22
- # - ${LITESTREAM_AGE_PUBLIC_KEY}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docker/redis.conf DELETED
The diff for this file is too large to render. See raw diff
 
docker/start-litestream.sh DELETED
@@ -1,73 +0,0 @@
1
- #!/bin/sh
2
-
3
- if [ ! -d "${NC_TOOL_DIR}" ] ; then
4
- mkdir -p "$NC_TOOL_DIR"
5
- fi
6
-
7
- # ensure backwards compatibility of renamed env vars
8
- if [ -z "${LITESTREAM_S3_ACCESS_KEY_ID}" ] && [ -n "${AWS_ACCESS_KEY_ID}" ] ; then
9
- export LITESTREAM_S3_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}"
10
- fi
11
- if [ -z "${LITESTREAM_S3_SECRET_ACCESS_KEY}" ] && [ -n "${AWS_SECRET_ACCESS_KEY}" ] ; then
12
- export LITESTREAM_S3_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
13
- fi
14
- if [ -z "${LITESTREAM_S3_PATH}" ] && [ -n "${AWS_BUCKET_PATH}" ] ; then
15
- export LITESTREAM_S3_PATH="${AWS_BUCKET_PATH}"
16
- fi
17
- if [ -z "${LITESTREAM_S3_BUCKET}" ] && [ -n "${AWS_BUCKET}" ] ; then
18
- export LITESTREAM_S3_BUCKET="${AWS_BUCKET}"
19
- fi
20
-
21
-
22
- use_litestream() {
23
- [ -z "${NC_DB}" ] \
24
- && [ -z "${NC_DB_JSON}" ] \
25
- && [ -z "${NC_DB_JSON_FILE}" ] \
26
- && [ -z "${DATABASE_URL}" ] \
27
- && [ -z "${DATABASE_URL_FILE}" ] \
28
- && [ -z "${NC_MINIMAL_DBS}" ] \
29
- && [ -n "${LITESTREAM_S3_BUCKET}" ] \
30
- && [ -n "${LITESTREAM_S3_ACCESS_KEY_ID}" ] \
31
- && [ -n "${LITESTREAM_S3_SECRET_ACCESS_KEY}" ]
32
- }
33
-
34
- if use_litestream ; then
35
-
36
- # set default bucket path if not provided
37
- : "${LITESTREAM_S3_PATH:=nocodb}"
38
-
39
- # enable age encryption in Litestream config if indicated
40
- LITESTREAM_CONFIG_PATH='/etc/litestream.yml'
41
-
42
- if [ -n "${LITESTREAM_AGE_PUBLIC_KEY}" ] \
43
- && [ -n "${LITESTREAM_AGE_SECRET_KEY}" ] \
44
- && ! dasel --file "${LITESTREAM_CONFIG_PATH}" --read yaml 'dbs.first().replicas.first().age' > /dev/null 2>&1 ; then
45
- # shellcheck disable=SC2016
46
- dasel put --file "${LITESTREAM_CONFIG_PATH}" \
47
- --read yaml \
48
- --type json \
49
- --value '{ "identities": [ "${LITESTREAM_AGE_SECRET_KEY}" ], "recipients": [ "${LITESTREAM_AGE_PUBLIC_KEY}" ] }' \
50
- --selector 'dbs.first().replicas.first().age'
51
- fi
52
-
53
- # remove any possible local DB leftovers
54
- if [ -f "${NC_TOOL_DIR}noco.db" ] ; then
55
- rm "${NC_TOOL_DIR}noco.db"
56
- rm -f "${NC_TOOL_DIR}noco.db-shm"
57
- rm -f "${NC_TOOL_DIR}noco.db-wal"
58
- fi
59
-
60
- # restore DB from Litestream replica
61
- litestream restore "${NC_TOOL_DIR}noco.db"
62
-
63
- # create empty DB file if no Litestream replica exists
64
- if [ ! -f "${NC_TOOL_DIR}noco.db" ] ; then
65
- touch "${NC_TOOL_DIR}noco.db"
66
- fi
67
-
68
- # start Litestream replication
69
- litestream replicate &
70
- fi
71
-
72
- # start NocoDB
73
- node docker/main.js
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docker/startup.sh DELETED
@@ -1,64 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
-
4
- # 加载环境变量
5
- if [ -f /etc/profile.d/s3_env.sh ]; then
6
- . /etc/profile.d/s3_env.sh
7
- fi
8
-
9
- log() {
10
- echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
11
- }
12
-
13
- log "启动 PostgreSQL..."
14
- pg_ctl -D /usr/app/data/pgdata -l /usr/app/data/pgdata/logfile start
15
-
16
- # 等待 PostgreSQL 启动
17
- for i in $(seq 1 30); do
18
- if pg_isready -U nocodb; then
19
- break
20
- fi
21
- log "等待 PostgreSQL 启动..."
22
- sleep 2
23
- done
24
-
25
- if ! pg_isready -U nocodb; then
26
- log "PostgreSQL 启动失败"
27
- exit 2
28
- fi
29
-
30
- log "检查并创建 PostgreSQL 数据库..."
31
- # 使用 nocodb 用户和 template1 数据库来执行初始命令
32
- psql -U nocodb -d template1 -c "SELECT 1 FROM pg_database WHERE datname = 'nocodb';" | grep -q 1 || psql -U nocodb -d template1 -c "CREATE DATABASE nocodb;"
33
- psql -U nocodb -d template1 -c "ALTER USER nocodb WITH PASSWORD 'nocodb_password';"
34
-
35
- log "可通过 pg://localhost:5432?u=nocodb&p=nocodb_password&d=nocodb 连接到数据库"
36
-
37
- log "启动 Redis..."
38
- # 尝试以当前用户启动 Redis
39
- redis-server /etc/redis.conf --port 6379 --daemonize yes
40
-
41
- # 等待 Redis 启动
42
- for i in $(seq 1 30); do
43
- if redis-cli -p 6379 -a redis_password ping; then
44
- log "Redis 已成功启动"
45
- break
46
- fi
47
- log "等待 Redis 启动..."
48
- sleep 1
49
- done
50
-
51
- if ! redis-cli -p 6379 -a redis_password ping; then
52
- log "Redis 启动失败,查看日志:"
53
- cat /var/log/redis/redis.log
54
- log "Redis 进程状态:"
55
- ps aux | grep redis-server
56
- log "Redis 套接字状态:"
57
- ls -l /var/run/redis
58
- log "Redis 数据目录状态:"
59
- ls -l /usr/app/data
60
- exit 1
61
- fi
62
-
63
- log "启动主程序..."
64
- exec /usr/src/appEntry/start.sh
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hf-nocodb ADDED
@@ -0,0 +1 @@
 
 
1
+ Subproject commit 464eb44b5a1dd8276b5fba49fc5e69b179d71984
package.json DELETED
@@ -1,200 +0,0 @@
1
- {
2
- "name": "nocodb",
3
- "version": "0.257.0",
4
- "description": "NocoDB Backend",
5
- "main": "dist/bundle.js",
6
- "author": {
7
- "name": "NocoDB Inc",
8
- "url": "https://nocodb.com/"
9
- },
10
- "homepage": "https://github.com/nocodb/nocodb",
11
- "repository": {
12
- "type": "git",
13
- "url": "https://github.com/nocodb/nocodb.git"
14
- },
15
- "bugs": {
16
- "url": "https://github.com/nocodb/nocodb/issues"
17
- },
18
- "engines": {
19
- "node": ">=18.19.1"
20
- },
21
- "license": "AGPL-3.0-or-later",
22
- "scripts": {
23
- "build": "pnpm run docker:build",
24
- "build:obfuscate": "EE=true webpack --config webpack.config.js",
25
- "build:cli:module": "EE=true webpack --config webpack.cli.config.js",
26
- "obfuscate:build:publish": "pnpm run build:obfuscate && pnpm publish .",
27
- "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
28
- "start": "pnpm run watch:run",
29
- "start:prod": "node docker/main",
30
- "lint": "eslint \"src/**/*.ts\" --fix",
31
- "test": "jest --runInBand --forceExit",
32
- "test:watch": "jest --watch",
33
- "test:cov": "jest --coverage",
34
- "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
35
- "test:e2e": "jest --config ./test/jest-e2e.json",
36
- "watch:run": "cross-env NC_DISABLE_TELE=true NODE_ENV=development EE=true nodemon -e ts,js -w ./src -x \"ts-node src/run/docker --log-error --project tsconfig.json\"",
37
- "watch:run:mysql": "cross-env NC_DISABLE_TELE=true NODE_ENV=development EE=true nodemon -e ts,js -w ./src -x \"ts-node src/run/dockerRunMysql --log-error --project tsconfig.json\"",
38
- "watch:run:pg": "cross-env NC_DISABLE_TELE=true NODE_ENV=development EE=true nodemon -e ts,js -w ./src -x \"ts-node src/run/dockerRunPG --log-error --project tsconfig.json\"",
39
- "watch:run:playwright:mysql": "rm -f ./test_noco.db; cross-env DB_TYPE=mysql NC_DB=\"mysql2://localhost:3306?u=root&p=password&d=pw_ncdb\" PLAYWRIGHT_TEST=true NODE_ENV=test NC_DISABLE_TELE=true EE=true nodemon -e ts,js -w ./src -x \"ts-node src/run/testDocker --log-error --project tsconfig.json\"",
40
- "watch:run:playwright:pg": "rm -f ./test_noco.db; cross-env DB_TYPE=pg NC_DB=\"pg://localhost:5432?u=postgres&p=password&d=pw_ncdb\" PLAYWRIGHT_TEST=true NODE_ENV=test NC_DISABLE_TELE=true EE=true nodemon -e ts,js -w ./src -x \"ts-node src/run/testDocker --log-error --project tsconfig.json\"",
41
- "watch:run:playwright": "rm -f ./test_*.db; cross-env DB_TYPE=sqlite DATABASE_URL=sqlite:./test_noco.db PLAYWRIGHT_TEST=true NODE_ENV=test NC_DISABLE_TELE=true EE=true NC_SNAPSHOT_WINDOW_SEC=3 nodemon -e ts,js -w ./src -x \"ts-node src/run/testDocker --log-error --project tsconfig.json\"",
42
- "watch:run:playwright:quick": "rm -f ./test_noco.db; cp ../../tests/playwright/fixtures/noco_0_91_7.db ./test_noco.db; cross-env NODE_ENV=test DATABASE_URL=sqlite:./test_noco.db NC_DISABLE_TELE=true EE=true nodemon -e ts,js -w ./src -x \"ts-node src/run/docker --log-error --project tsconfig.json\"",
43
- "watch:run:playwright:pg:cyquick": "rm -f ./test_noco.db; cp ../../tests/playwright/fixtures/noco_0_91_7.db ./test_noco.db; cross-env NODE_ENV=test NC_DISABLE_TELE=true EE=true nodemon -e ts,js -w ./src -x \"ts-node src/run/dockerRunPG_CyQuick.ts --log-error --project tsconfig.json\"",
44
- "test:unit": "cross-env EE=false NODE_ENV=test TS_NODE_PROJECT=./tests/unit/tsconfig.json mocha -r ts-node/register tests/unit/index.test.ts --recursive --timeout 300000 --exit --delay",
45
- "test:unit:pg": "cp tests/unit/.pg.env tests/unit/.env; cross-env NODE_ENV=test EE=false TS_NODE_PROJECT=./tests/unit/tsconfig.json mocha -r ts-node/register tests/unit/index.test.ts --recursive --timeout 300000 --exit --delay",
46
- "docker:build": "EE=\"true-xc-test\" webpack --config docker/webpack.config.js"
47
- },
48
- "dependencies": {
49
- "@aws-sdk/client-kafka": "^3.620.0",
50
- "@aws-sdk/client-kinesis": "^3.620.0",
51
- "@aws-sdk/client-s3": "^3.620.0",
52
- "@aws-sdk/client-ses": "^3.620.0",
53
- "@aws-sdk/client-sns": "^3.620.0",
54
- "@aws-sdk/lib-storage": "^3.620.0",
55
- "@aws-sdk/s3-request-presigner": "^3.620.0",
56
- "@google-cloud/storage": "^7.7.0",
57
- "@jm18457/kafkajs-msk-iam-authentication-mechanism": "^3.1.2",
58
- "@nestjs/bull": "^10.0.1",
59
- "@nestjs/common": "^10.3.8",
60
- "@nestjs/config": "^3.1.1",
61
- "@nestjs/core": "^10.3.8",
62
- "@nestjs/event-emitter": "^2.0.4",
63
- "@nestjs/passport": "^10.0.3",
64
- "@nestjs/platform-express": "^10.3.8",
65
- "@nestjs/platform-socket.io": "^10.3.8",
66
- "@nestjs/throttler": "^5.1.2",
67
- "@nestjs/websockets": "^10.3.8",
68
- "@ntegral/nestjs-sentry": "^4.0.1",
69
- "@sentry/node": "^6.19.7",
70
- "@techpass/passport-openidconnect": "^0.3.3",
71
- "@types/chai": "^4.3.16",
72
- "airtable": "^0.12.2",
73
- "ajv": "^8.12.0",
74
- "ajv-formats": "^2.1.1",
75
- "auto-bind": "^4.0.0",
76
- "aws-sdk": "^2.1550.0",
77
- "axios": "^1.6.8",
78
- "bcryptjs": "^2.4.3",
79
- "boxen": "^5.1.2",
80
- "bull": "^4.12.5",
81
- "bullmq": "^1.91.1",
82
- "clear": "^0.1.0",
83
- "clickhouse": "^2.6.0",
84
- "clickhouse-migrations": "^0.1.14",
85
- "colors": "^1.4.0",
86
- "compare-versions": "^6.1.0",
87
- "content-disposition": "^0.5.4",
88
- "cookie-parser": "^1.4.6",
89
- "cors": "^2.8.5",
90
- "cron": "^1.8.2",
91
- "crypto-js": "^4.2.0",
92
- "dataloader": "^2.2.2",
93
- "dayjs": "^1.11.11",
94
- "debug": "^4.3.4",
95
- "dotenv": "^8.6.0",
96
- "ejs": "^3.1.10",
97
- "emittery": "^0.13.1",
98
- "express": "^4.18.3",
99
- "fast-levenshtein": "^2.0.6",
100
- "fs-extra": "^9.1.0",
101
- "glob": "^10.4.5",
102
- "handlebars": "^4.7.8",
103
- "html-to-json-parser": "^2.0.1",
104
- "import-fresh": "^3.3.0",
105
- "inflection": "^1.13.4",
106
- "ioredis": "^5.4.1",
107
- "ioredis-mock": "^8.9.0",
108
- "is-docker": "^2.2.1",
109
- "isomorphic-dompurify": "^1.13.0",
110
- "jsep": "^1.3.8",
111
- "json5": "^2.2.3",
112
- "jsonfile": "^6.1.0",
113
- "jsonwebtoken": "^9.0.2",
114
- "kafkajs": "^2.2.4",
115
- "knex": "2.4.2",
116
- "list-github-dir-content": "^3.0.0",
117
- "lodash": "^4.17.21",
118
- "mailersend": "^1.5.0",
119
- "marked": "^4.3.0",
120
- "mime": "^2.6.0",
121
- "minio": "^8.0.1",
122
- "mkdirp": "^2.1.6",
123
- "mssql": "^10.0.2",
124
- "multer": "^1.4.5-lts.1",
125
- "mysql2": "^3.9.7",
126
- "nanoid": "^3.3.7",
127
- "nc-lib-gui": "0.257.0",
128
- "nestjs-throttler-storage-redis": "^0.4.4",
129
- "nocodb-sdk": "workspace:^",
130
- "nodemailer": "^6.9.13",
131
- "object-hash": "^3.0.0",
132
- "object-sizeof": "^2.6.4",
133
- "os-locale": "^6.0.2",
134
- "p-queue": "^6.6.2",
135
- "papaparse": "^5.4.1",
136
- "parse-database-url": "^0.3.0",
137
- "passport": "^0.7.0",
138
- "passport-custom": "^1.1.1",
139
- "passport-google-oauth20": "^2.0.0",
140
- "passport-http": "^0.3.0",
141
- "passport-jwt": "^4.0.1",
142
- "passport-local": "^1.0.0",
143
- "pg": "^8.11.5",
144
- "redlock": "^5.0.0-beta.2",
145
- "reflect-metadata": "^0.2.1",
146
- "request-filtering-agent": "^1.1.2",
147
- "request-ip": "^3.3.0",
148
- "rxjs": "^7.8.1",
149
- "sharp": "^0.33.4",
150
- "slash": "^3.0.0",
151
- "slug": "^8.2.3",
152
- "socket.io": "^4.7.5",
153
- "sqlite3": "^5.1.7",
154
- "tedious": "^16.6.1",
155
- "tinycolor2": "^1.6.0",
156
- "twilio": "^4.23.0",
157
- "uuid": "^9.0.1",
158
- "validator": "^13.11.0",
159
- "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
160
- },
161
- "devDependencies": {
162
- "@nestjs/cli": "^10.3.2",
163
- "@nestjs/schematics": "^10.1.1",
164
- "@nestjs/testing": "^10.3.8",
165
- "@nestjsplus/dyn-schematics": "^1.0.12",
166
- "@types/content-disposition": "^0.5.8",
167
- "@types/ejs": "^3.1.5",
168
- "@types/express": "^4.17.21",
169
- "@types/jest": "^29.5.12",
170
- "@types/mocha": "^10.0.6",
171
- "@types/multer": "^1.4.11",
172
- "@types/node": "20.11.30",
173
- "@types/passport-google-oauth20": "^2.0.16",
174
- "@types/passport-jwt": "^3.0.13",
175
- "@types/supertest": "^2.0.16",
176
- "@typescript-eslint/eslint-plugin": "^6.21.0",
177
- "@typescript-eslint/parser": "^6.21.0",
178
- "chai": "^4.4.1",
179
- "copy-webpack-plugin": "^11.0.0",
180
- "cross-env": "^7.0.3",
181
- "eslint": "^8.56.0",
182
- "eslint-config-prettier": "^8.10.0",
183
- "eslint-plugin-eslint-comments": "^3.2.0",
184
- "eslint-plugin-functional": "^5.0.8",
185
- "eslint-plugin-import": "^2.29.1",
186
- "eslint-plugin-prettier": "^4.2.1",
187
- "jest": "29.7.0",
188
- "mocha": "^10.3.0",
189
- "nodemon": "^3.0.3",
190
- "prettier": "^2.8.8",
191
- "source-map-support": "^0.5.21",
192
- "supertest": "^6.3.4",
193
- "ts-jest": "29.1.2",
194
- "ts-loader": "^9.5.1",
195
- "ts-node": "^10.9.2",
196
- "tsconfig-paths": "^4.2.0",
197
- "typescript": "^5.3.3",
198
- "webpack-cli": "^5.1.4"
199
- }
200
- }