Spaces:
Sleeping
Sleeping
orztv
commited on
Commit
·
b1b5a32
1
Parent(s):
ccc2013
update
Browse files- .gitignore +3 -1
- Dockerfile +0 -72
- Dockerfile-pgsql +0 -51
- README.md +0 -12
- docker/litestream.yml +0 -22
- docker/redis.conf +0 -0
- docker/start-litestream.sh +0 -73
- docker/startup.sh +0 -64
- hf-nocodb +1 -0
- package.json +0 -200
.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 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|