mirror of
https://github.com/Cameri/nostream.git
synced 2025-07-12 23:02:18 +02:00
chore: improve docker building/running
This commit is contained in:
14
.dockerignore
Normal file
14
.dockerignore
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
dist
|
||||||
|
node_modules
|
||||||
|
.test-report
|
||||||
|
.coverage
|
||||||
|
seeds
|
||||||
|
test
|
||||||
|
.eslint*
|
||||||
|
.mocha*
|
||||||
|
.nvmrc
|
||||||
|
.nycrc*
|
||||||
|
docker-compose.yml
|
||||||
|
Dockerfile
|
||||||
|
*.env
|
||||||
|
*.md
|
@ -1,10 +1,10 @@
|
|||||||
FROM node:18-alpine3.15 as build
|
FROM node:18-alpine3.16 as build
|
||||||
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
|
|
||||||
COPY ["package.json", "package-lock.json", "./"]
|
COPY ["package.json", "package-lock.json", "./"]
|
||||||
|
|
||||||
RUN npm install
|
RUN npm install --quiet
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ WORKDIR /app
|
|||||||
|
|
||||||
COPY --from=build /build/dist .
|
COPY --from=build /build/dist .
|
||||||
|
|
||||||
RUN npm install --omit=dev
|
RUN npm install --omit=dev --quiet
|
||||||
|
|
||||||
USER 1000:1000
|
USER 1000:1000
|
||||||
|
|
||||||
|
35
README.md
35
README.md
@ -3,6 +3,8 @@
|
|||||||
This is a [nostr](https://github.com/fiatjaf/nostr) relay, written in
|
This is a [nostr](https://github.com/fiatjaf/nostr) relay, written in
|
||||||
Typescript.
|
Typescript.
|
||||||
|
|
||||||
|
This implementation is production-ready. See below for supported features.
|
||||||
|
|
||||||
The project master repository is available on [GitHub](https://github.com/Cameri/nostr-ts-relay).
|
The project master repository is available on [GitHub](https://github.com/Cameri/nostr-ts-relay).
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
@ -27,30 +29,38 @@ NIPs with a relay-specific implementation are listed here.
|
|||||||
- PostgreSQL
|
- PostgreSQL
|
||||||
- Node
|
- Node
|
||||||
- Typescript
|
- Typescript
|
||||||
|
- Docker (optional, version 20 or higher)
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start (Docker)
|
||||||
|
|
||||||
|
```
|
||||||
|
npm run docker:compose:up
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quick Start (Standalone)
|
||||||
|
|
||||||
Set the following environment variables:
|
Set the following environment variables:
|
||||||
|
|
||||||
```
|
```
|
||||||
DB_HOST=localhost
|
DB_HOST=localhost
|
||||||
DB_PORT=5432
|
DB_PORT=5432
|
||||||
DB_NAME=nostr-ts-relay
|
DB_NAME=nostr_ts_relay
|
||||||
DB_USER=postgres
|
DB_USER=postgres
|
||||||
DB_PASSWORD=postgres
|
DB_PASSWORD=postgres
|
||||||
```
|
```
|
||||||
|
|
||||||
Create `nostr-ts-relay` database:
|
Create `nostr_ts_relay` database:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ psql -h $DB_HOST -p $DB_PORT -U $DB_USER -W
|
$ psql -h $DB_HOST -p $DB_PORT -U $DB_USER -W
|
||||||
postgres=# create database nostr-ts-relay;
|
postgres=# create database nostr_ts_relay;
|
||||||
postgres=# quit
|
postgres=# quit
|
||||||
```
|
```
|
||||||
|
|
||||||
Install dependencies:
|
Install dependencies:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
npm install -g knex
|
||||||
npm install
|
npm install
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -60,15 +70,30 @@ Run migrations:
|
|||||||
npm run db:migrate
|
npm run db:migrate
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Create ~/.nostr folder:
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir ~/.nostr
|
||||||
|
```
|
||||||
|
|
||||||
To start in development mode:
|
To start in development mode:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Or, start in production mode:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm run start
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
TBD
|
You can change the default folder by setting the `NOSTR_CONFIG_DIR` environment variable to a different path.
|
||||||
|
|
||||||
|
Run nostr-ts-relay using one of the quick-start guides at least once and `~/.nostr/settings.json` will be created.
|
||||||
|
Any changes made to the settings file will be read on the next start.
|
||||||
|
|
||||||
## Dev Channel
|
## Dev Channel
|
||||||
|
|
||||||
|
@ -1,55 +1,60 @@
|
|||||||
services:
|
services:
|
||||||
relay:
|
relay:
|
||||||
build: .
|
build: .
|
||||||
|
container_name: nostr-ts-relay
|
||||||
environment:
|
environment:
|
||||||
DB_HOST: db
|
DB_HOST: db
|
||||||
DB_PORT: 5432
|
DB_PORT: 5432
|
||||||
DB_USER: nostr-ts-relay
|
DB_USER: nostr_ts_relay
|
||||||
DB_PASSWORD: nostr-ts-relay
|
DB_PASSWORD: nostr_ts_relay
|
||||||
DB_NAME: nostr-ts-relay
|
DB_NAME: nostr_ts_relay
|
||||||
NOSTR_CONFIG_DIR: /nostr
|
NOSTR_CONFIG_DIR: /home/node/
|
||||||
|
user: node:node
|
||||||
volumes:
|
volumes:
|
||||||
- nostr-config:/nostr
|
- $HOME/.nostr:/home/node/
|
||||||
ports:
|
ports:
|
||||||
- "8008:8008"
|
- "8008:8008"
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
migration:
|
migrations:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
networks:
|
networks:
|
||||||
- nostr-ts-relay
|
- nostr-ts-relay
|
||||||
restart: always
|
restart: always
|
||||||
db:
|
db:
|
||||||
image: postgres
|
image: postgres
|
||||||
|
container_name: db
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: nostr-ts-relay
|
POSTGRES_USER: nostr_ts_relay
|
||||||
POSTGRES_PASSWORD: nostr-ts-relay
|
POSTGRES_PASSWORD: nostr_ts_relay
|
||||||
volumes:
|
volumes:
|
||||||
- postgres-data:/var/lib/postgresql/data/
|
- pgdata:/var/lib/postgresql/data/
|
||||||
networks:
|
networks:
|
||||||
- nostr-ts-relay
|
- nostr-ts-relay
|
||||||
restart: always
|
restart: always
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U nostr-ts-relay"]
|
test: ["CMD-SHELL", "pg_isready -U nostr_ts_relay"]
|
||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
migration:
|
migrations:
|
||||||
image: node:18-alpine3.15
|
image: node:18-alpine3.15
|
||||||
|
container_name: migrations
|
||||||
environment:
|
environment:
|
||||||
DB_HOST: db
|
DB_HOST: db
|
||||||
DB_PORT: 5432
|
DB_PORT: 5432
|
||||||
DB_USER: nostr-ts-relay
|
DB_USER: nostr_ts_relay
|
||||||
DB_PASSWORD: nostr-ts-relay
|
DB_PASSWORD: nostr_ts_relay
|
||||||
DB_NAME: nostr-ts-relay
|
DB_NAME: nostr_ts_relay
|
||||||
entrypoint:
|
entrypoint:
|
||||||
- sh
|
- sh
|
||||||
- -c
|
- -c
|
||||||
- 'sleep 5s && cd code/ && npm install -g knex && npm run db:migrate'
|
- 'cd code && npm install -g knex@2.3.0 && npm install knex --quiet && npm run db:migrate'
|
||||||
restart: on-failure
|
|
||||||
volumes:
|
volumes:
|
||||||
- .:/code
|
- ./package.json:/code/package.json
|
||||||
|
- ./migrations:/code/migrations
|
||||||
|
- ./knexfile.js:/code/knexfile.js
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
networks:
|
networks:
|
||||||
@ -59,5 +64,4 @@ networks:
|
|||||||
nostr-ts-relay:
|
nostr-ts-relay:
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
postgres-data:
|
pgdata:
|
||||||
nostr-config:
|
|
||||||
|
89
package-lock.json
generated
89
package-lock.json
generated
@ -38,9 +38,9 @@
|
|||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"sinon-chai": "^3.7.0",
|
"sinon-chai": "^3.7.0",
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"ts-node": "^10.7.0",
|
"ts-node": "^10.9.1",
|
||||||
"ts-node-dev": "^1.1.8",
|
"ts-node-dev": "^1.1.8",
|
||||||
"typescript": "^4.6.3",
|
"typescript": "4.6",
|
||||||
"uuid": "^8.3.2"
|
"uuid": "^8.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -457,27 +457,28 @@
|
|||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@cspotcode/source-map-consumer": {
|
|
||||||
"version": "0.8.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
|
|
||||||
"integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@cspotcode/source-map-support": {
|
"node_modules/@cspotcode/source-map-support": {
|
||||||
"version": "0.7.0",
|
"version": "0.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
|
||||||
"integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
|
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cspotcode/source-map-consumer": "0.8.0"
|
"@jridgewell/trace-mapping": "0.3.9"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
|
||||||
|
"version": "0.3.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
|
||||||
|
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/resolve-uri": "^3.0.3",
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@eslint/eslintrc": {
|
"node_modules/@eslint/eslintrc": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
|
||||||
@ -4407,12 +4408,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ts-node": {
|
"node_modules/ts-node": {
|
||||||
"version": "10.7.0",
|
"version": "10.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
|
||||||
"integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==",
|
"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cspotcode/source-map-support": "0.7.0",
|
"@cspotcode/source-map-support": "^0.8.0",
|
||||||
"@tsconfig/node10": "^1.0.7",
|
"@tsconfig/node10": "^1.0.7",
|
||||||
"@tsconfig/node12": "^1.0.7",
|
"@tsconfig/node12": "^1.0.7",
|
||||||
"@tsconfig/node14": "^1.0.0",
|
"@tsconfig/node14": "^1.0.0",
|
||||||
@ -4423,7 +4424,7 @@
|
|||||||
"create-require": "^1.1.0",
|
"create-require": "^1.1.0",
|
||||||
"diff": "^4.0.1",
|
"diff": "^4.0.1",
|
||||||
"make-error": "^1.1.1",
|
"make-error": "^1.1.1",
|
||||||
"v8-compile-cache-lib": "^3.0.0",
|
"v8-compile-cache-lib": "^3.0.1",
|
||||||
"yn": "3.1.1"
|
"yn": "3.1.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
@ -4612,9 +4613,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/typescript": {
|
"node_modules/typescript": {
|
||||||
"version": "4.6.3",
|
"version": "4.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
|
||||||
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
|
"integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
@ -5197,19 +5198,25 @@
|
|||||||
"to-fast-properties": "^2.0.0"
|
"to-fast-properties": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@cspotcode/source-map-consumer": {
|
|
||||||
"version": "0.8.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
|
|
||||||
"integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"@cspotcode/source-map-support": {
|
"@cspotcode/source-map-support": {
|
||||||
"version": "0.7.0",
|
"version": "0.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
|
||||||
"integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
|
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@cspotcode/source-map-consumer": "0.8.0"
|
"@jridgewell/trace-mapping": "0.3.9"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/trace-mapping": {
|
||||||
|
"version": "0.3.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
|
||||||
|
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@jridgewell/resolve-uri": "^3.0.3",
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.10"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@eslint/eslintrc": {
|
"@eslint/eslintrc": {
|
||||||
@ -8141,12 +8148,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"ts-node": {
|
"ts-node": {
|
||||||
"version": "10.7.0",
|
"version": "10.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
|
||||||
"integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==",
|
"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@cspotcode/source-map-support": "0.7.0",
|
"@cspotcode/source-map-support": "^0.8.0",
|
||||||
"@tsconfig/node10": "^1.0.7",
|
"@tsconfig/node10": "^1.0.7",
|
||||||
"@tsconfig/node12": "^1.0.7",
|
"@tsconfig/node12": "^1.0.7",
|
||||||
"@tsconfig/node14": "^1.0.0",
|
"@tsconfig/node14": "^1.0.0",
|
||||||
@ -8157,7 +8164,7 @@
|
|||||||
"create-require": "^1.1.0",
|
"create-require": "^1.1.0",
|
||||||
"diff": "^4.0.1",
|
"diff": "^4.0.1",
|
||||||
"make-error": "^1.1.1",
|
"make-error": "^1.1.1",
|
||||||
"v8-compile-cache-lib": "^3.0.0",
|
"v8-compile-cache-lib": "^3.0.1",
|
||||||
"yn": "3.1.1"
|
"yn": "3.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -8276,9 +8283,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "4.6.3",
|
"version": "4.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
|
||||||
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
|
"integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"universalify": {
|
"universalify": {
|
||||||
|
22
package.json
22
package.json
@ -17,28 +17,32 @@
|
|||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "ts-node src/index.ts",
|
"dev": "ts-node src/index.ts",
|
||||||
"dev:watch": "nodemon --watch src src/index.ts",
|
|
||||||
"clean": "rimraf ./dist",
|
"clean": "rimraf ./dist",
|
||||||
"build": "tsc --project tsconfig.build.json",
|
"build": "tsc --project tsconfig.build.json",
|
||||||
"build:check": "tsc --noEmit",
|
"prestart": "npm run build",
|
||||||
|
"start": "cd dist && node src/index.js",
|
||||||
|
"build:check": "npm run build -- --noEmit",
|
||||||
"lint": "eslint ./src ./test --ext .ts",
|
"lint": "eslint ./src ./test --ext .ts",
|
||||||
"lint:fix": "npm run lint -- --fix",
|
"lint:fix": "npm run lint -- --fix",
|
||||||
"db:migrate": "knex migrate:latest",
|
"db:migrate": "knex migrate:latest",
|
||||||
"db:migrate:rollback": "knex migrate:rollback",
|
"db:migrate:rollback": "knex migrate:rollback",
|
||||||
"db:seed": "knex seed:run",
|
"db:seed": "knex seed:run",
|
||||||
"start": "node dist/index.js",
|
|
||||||
"test": "mocha 'test/**/*.spec.ts'",
|
"test": "mocha 'test/**/*.spec.ts'",
|
||||||
"test:watch": "npm run test -- --min --watch --watch-files src/**/*,test/**/*",
|
"test:watch": "npm run test -- --min --watch --watch-files src/**/*,test/**/*",
|
||||||
"cover": "nyc npm run test",
|
"cover": "nyc npm run test",
|
||||||
"cover:watch": "nyc npm run test",
|
"docker:build": "docker build -t nostr-ts-relay .",
|
||||||
"docker:build": "docker build -t nostr-ts-relay ."
|
"predocker:compose:up": "[ -d \"$HOME/.nostr\" ] || mkdir -p $HOME/.nostr",
|
||||||
|
"docker:compose:up": "NOSTR_CONFIG_DIR=$HOME/.nostrx docker compose up --build",
|
||||||
|
"docker:compose:down": "docker compose down",
|
||||||
|
"docker:compose:rm": "docker compose rm"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/Cameri/nostr-ts-relay.git"
|
"url": "git+https://github.com/Cameri/nostr-ts-relay.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"nostr"
|
"nostr",
|
||||||
|
"relay"
|
||||||
],
|
],
|
||||||
"author": "Ricardo Arturo Cabral Mejía",
|
"author": "Ricardo Arturo Cabral Mejía",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -67,15 +71,15 @@
|
|||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"sinon-chai": "^3.7.0",
|
"sinon-chai": "^3.7.0",
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"ts-node": "^10.7.0",
|
"ts-node": "^10.9.1",
|
||||||
"ts-node-dev": "^1.1.8",
|
"ts-node-dev": "^1.1.8",
|
||||||
"typescript": "^4.6.3",
|
"typescript": "4.6",
|
||||||
"uuid": "^8.3.2"
|
"uuid": "^8.3.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@noble/secp256k1": "1.7.0",
|
"@noble/secp256k1": "1.7.0",
|
||||||
"joi": "17.6.1",
|
"joi": "17.6.1",
|
||||||
"knex": "2.3.0",
|
"knex": "^2.3.0",
|
||||||
"pg": "8.8.0",
|
"pg": "8.8.0",
|
||||||
"pg-query-stream": "4.2.3",
|
"pg-query-stream": "4.2.3",
|
||||||
"ramda": "0.28.0",
|
"ramda": "0.28.0",
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
"inlineSources": false,
|
"inlineSources": false,
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"lib": ["ESNext"]
|
"lib": ["ESNext"],
|
||||||
|
"incremental": true
|
||||||
},
|
},
|
||||||
"ts-node": {
|
"ts-node": {
|
||||||
"transpileOnly": true
|
"transpileOnly": true
|
||||||
|
Reference in New Issue
Block a user