feat: tsup, small fixes
This commit is contained in:
parent
b8b1a5bba6
commit
eef6fdaeb3
28 changed files with 967 additions and 597 deletions
File diff suppressed because one or more lines are too long
|
@ -6,4 +6,4 @@ plugins:
|
||||||
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
||||||
spec: "@yarnpkg/plugin-interactive-tools"
|
spec: "@yarnpkg/plugin-interactive-tools"
|
||||||
|
|
||||||
yarnPath: .yarn/releases/yarn-3.2.4.cjs
|
yarnPath: .yarn/releases/yarn-3.3.1.cjs
|
||||||
|
|
|
@ -62,4 +62,4 @@ COPY --from=builder /build/tsconfig.json ./tsconfig.json
|
||||||
COPY --from=builder /build/package.json ./package.json
|
COPY --from=builder /build/package.json ./package.json
|
||||||
COPY --from=builder /build/mimes.json ./mimes.json
|
COPY --from=builder /build/mimes.json ./mimes.json
|
||||||
|
|
||||||
CMD ["node", "--enable-source-maps", "dist/server"]
|
CMD ["node", "--enable-source-maps", "dist"]
|
|
@ -1,23 +0,0 @@
|
||||||
const esbuild = require('esbuild');
|
|
||||||
const { existsSync } = require('fs');
|
|
||||||
const { rm } = require('fs/promises');
|
|
||||||
const { recursiveReadDir } = require('next/dist/lib/recursive-readdir');
|
|
||||||
|
|
||||||
(async () => {
|
|
||||||
if (existsSync('./dist')) {
|
|
||||||
await rm('./dist', { recursive: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
const entryPoints = await recursiveReadDir('./src', /.*\.(ts)$/, /(themes|queries|pages)/);
|
|
||||||
|
|
||||||
await esbuild.build({
|
|
||||||
tsconfig: 'tsconfig.json',
|
|
||||||
outdir: 'dist',
|
|
||||||
platform: 'node',
|
|
||||||
entryPoints,
|
|
||||||
format: 'cjs',
|
|
||||||
resolveExtensions: ['.ts', '.js'],
|
|
||||||
write: true,
|
|
||||||
sourcemap: true,
|
|
||||||
});
|
|
||||||
})();
|
|
|
@ -4,15 +4,15 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm-run-all build:server dev:run",
|
"dev": "npm-run-all build:server dev:run",
|
||||||
"dev:run": "cross-env DEBUG=true REACT_EDITOR=code NODE_ENV=development RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=false node --enable-source-maps dist/server",
|
"dev:run": "cross-env DEBUG=true REACT_EDITOR=code NODE_ENV=development RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=false node --enable-source-maps dist",
|
||||||
"build": "npm-run-all build:server build:schema build:next",
|
"build": "npm-run-all build:server build:schema build:next",
|
||||||
"build-ci": "cross-env ZIPLINE_DOCKER_BUILD=1 npm-run-all build:server build:schema build:next",
|
"build-ci": "cross-env ZIPLINE_DOCKER_BUILD=1 npm-run-all build:server build:schema build:next",
|
||||||
"build:server": "node esbuild.config.js",
|
"build:server": "tsup",
|
||||||
"build:next": "next build",
|
"build:next": "next build",
|
||||||
"build:schema": "prisma generate --schema=prisma/schema.prisma",
|
"build:schema": "prisma generate --schema=prisma/schema.prisma",
|
||||||
"format": "prettier --write ./src/**/*.{ts,tsx} ./*.{md,js,json,yml}",
|
"format": "prettier --write ./src/**/*.{ts,tsx} ./*.{md,js,json,yml}",
|
||||||
"migrate:dev": "prisma migrate dev --create-only",
|
"migrate:dev": "prisma migrate dev --create-only",
|
||||||
"start": "node dist/server",
|
"start": "node dist",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
"docker:run": "docker-compose up -d",
|
"docker:run": "docker-compose up -d",
|
||||||
"docker:down": "docker-compose down",
|
"docker:down": "docker-compose down",
|
||||||
|
@ -82,13 +82,13 @@
|
||||||
"@types/react": "^18.0.26",
|
"@types/react": "^18.0.26",
|
||||||
"@types/sharp": "^0.31.0",
|
"@types/sharp": "^0.31.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"esbuild": "^0.16.4",
|
|
||||||
"eslint": "^8.29.0",
|
"eslint": "^8.29.0",
|
||||||
"eslint-config-next": "^13.0.6",
|
"eslint-config-next": "^13.0.6",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.5.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"prettier": "^2.8.1",
|
"prettier": "^2.8.1",
|
||||||
|
"tsup": "^6.5.0",
|
||||||
"typescript": "^4.9.4"
|
"typescript": "^4.9.4"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Config } from './config/Config';
|
import { Config } from 'config/Config';
|
||||||
import readConfig from './config/readConfig';
|
import readConfig from 'config/readConfig';
|
||||||
import validateConfig from './config/validateConfig';
|
import validateConfig from 'config/validateConfig';
|
||||||
|
|
||||||
if (!global.config) global.config = validateConfig(readConfig());
|
if (!global.config) global.config = validateConfig(readConfig());
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@ import { parse } from 'dotenv';
|
||||||
import { expand } from 'dotenv-expand';
|
import { expand } from 'dotenv-expand';
|
||||||
import { existsSync, readFileSync } from 'fs';
|
import { existsSync, readFileSync } from 'fs';
|
||||||
import { resolve } from 'path';
|
import { resolve } from 'path';
|
||||||
import Logger from '../logger';
|
import Logger from 'lib/logger';
|
||||||
import { humanToBytes } from '../utils/bytes';
|
import { humanToBytes } from 'utils/bytes';
|
||||||
|
|
||||||
export type ValueType = 'string' | 'number' | 'boolean' | 'array' | 'json-array' | 'human-to-byte' | 'path';
|
export type ValueType = 'string' | 'number' | 'boolean' | 'array' | 'json-array' | 'human-to-byte' | 'path';
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { s } from '@sapphire/shapeshift';
|
import { s } from '@sapphire/shapeshift';
|
||||||
import type { Config } from './Config';
|
import type { Config } from './Config';
|
||||||
import { inspect } from 'util';
|
import { inspect } from 'util';
|
||||||
import Logger from '../logger';
|
import Logger from 'lib/logger';
|
||||||
import { humanToBytes } from '../utils/bytes';
|
import { humanToBytes } from 'utils/bytes';
|
||||||
|
|
||||||
const discord_content = s
|
const discord_content = s
|
||||||
.object({
|
.object({
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Datasource } from '.';
|
import { Datasource } from '.';
|
||||||
import { ConfigSupabaseDatasource } from 'lib/config/Config';
|
import { ConfigSupabaseDatasource } from 'lib/config/Config';
|
||||||
import { guess } from '../mimes';
|
import { guess } from 'lib/mimes';
|
||||||
import Logger from '../logger';
|
import Logger from 'lib/logger';
|
||||||
import { Readable } from 'stream';
|
import { Readable } from 'stream';
|
||||||
|
|
||||||
export class Supabase extends Datasource {
|
export class Supabase extends Datasource {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { Image, Url, User } from '@prisma/client';
|
import { Image, Url, User } from '@prisma/client';
|
||||||
import config from 'lib/config';
|
import config from 'lib/config';
|
||||||
import { ConfigDiscordContent } from 'lib/config/Config';
|
import { ConfigDiscordContent } from 'config/Config';
|
||||||
import Logger from './logger';
|
import Logger from 'lib/logger';
|
||||||
import { parseString, ParseValue } from './utils/parser';
|
import { parseString, ParseValue } from 'utils/parser';
|
||||||
|
|
||||||
const logger = Logger.get('discord');
|
const logger = Logger.get('discord');
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { PrismaClient } from '@prisma/client';
|
import { PrismaClient } from '@prisma/client';
|
||||||
import { readdir, readFile } from 'fs/promises';
|
import { readdir, readFile } from 'fs/promises';
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
import config from '../lib/config';
|
import config from 'lib/config';
|
||||||
import datasource from '../lib/datasource';
|
import datasource from 'lib/datasource';
|
||||||
import { guess } from '../lib/mimes';
|
import { guess } from 'lib/mimes';
|
||||||
import { migrations } from '../server/util';
|
import { migrations } from 'server/util';
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const directory = process.argv[2];
|
const directory = process.argv[2];
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { PrismaClient } from '@prisma/client';
|
import { PrismaClient } from '@prisma/client';
|
||||||
import config from '../lib/config';
|
import config from 'lib/config';
|
||||||
import { migrations } from '../server/util';
|
import { migrations } from 'server/util';
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const extras = (process.argv[2] ?? '').split(',');
|
const extras = (process.argv[2] ?? '').split(',');
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
import config from '../lib/config';
|
import config from 'lib/config';
|
||||||
|
|
||||||
console.log(JSON.stringify(config, null, 2));
|
console.log(JSON.stringify(config, null, 2));
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { PrismaClient } from '@prisma/client';
|
import { PrismaClient } from '@prisma/client';
|
||||||
import { hash } from 'argon2';
|
import { hash } from 'argon2';
|
||||||
import config from '../lib/config';
|
import config from 'lib/config';
|
||||||
import { migrations } from '../server/util';
|
import { migrations } from 'server/util';
|
||||||
|
|
||||||
const SUPPORTED_FIELDS = [
|
const SUPPORTED_FIELDS = [
|
||||||
'username',
|
'username',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Image } from '@prisma/client';
|
import { Image } from '@prisma/client';
|
||||||
import { FastifyInstance, FastifyReply } from 'fastify';
|
import { FastifyInstance, FastifyReply } from 'fastify';
|
||||||
import fastifyPlugin from 'fastify-plugin';
|
import fastifyPlugin from 'fastify-plugin';
|
||||||
import exts from '../../lib/exts';
|
import exts from 'lib/exts';
|
||||||
|
|
||||||
function dbFileDecorator(fastify: FastifyInstance, _, done) {
|
function dbFileDecorator(fastify: FastifyInstance, _, done) {
|
||||||
fastify.decorateReply('dbFile', dbFile);
|
fastify.decorateReply('dbFile', dbFile);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { FastifyInstance, FastifyReply } from 'fastify';
|
import { FastifyInstance, FastifyReply } from 'fastify';
|
||||||
import { guess } from '../../lib/mimes';
|
import { guess } from 'lib/mimes';
|
||||||
import { extname } from 'path';
|
import { extname } from 'path';
|
||||||
import fastifyPlugin from 'fastify-plugin';
|
import fastifyPlugin from 'fastify-plugin';
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
import config from 'lib/config';
|
||||||
|
import datasource from 'lib/datasource';
|
||||||
|
import Logger from 'lib/logger';
|
||||||
import { version } from '../../package.json';
|
import { version } from '../../package.json';
|
||||||
import config from '../lib/config';
|
import { getStats } from 'server/util';
|
||||||
import datasource from '../lib/datasource';
|
|
||||||
import Logger from '../lib/logger';
|
|
||||||
import { getStats } from './util';
|
|
||||||
|
|
||||||
import fastify, { FastifyInstance, FastifyRequest, FastifyServerOptions } from 'fastify';
|
import fastify, { FastifyInstance, FastifyServerOptions } from 'fastify';
|
||||||
import { createReadStream, existsSync, readFileSync } from 'fs';
|
import { createReadStream, existsSync, readFileSync } from 'fs';
|
||||||
import dbFileDecorator from './decorators/dbFile';
|
import dbFileDecorator from './decorators/dbFile';
|
||||||
import notFound from './decorators/notFound';
|
import notFound from './decorators/notFound';
|
||||||
|
@ -12,6 +12,7 @@ import postFileDecorator from './decorators/postFile';
|
||||||
import postUrlDecorator from './decorators/postUrl';
|
import postUrlDecorator from './decorators/postUrl';
|
||||||
import preFileDecorator from './decorators/preFile';
|
import preFileDecorator from './decorators/preFile';
|
||||||
import rawFileDecorator from './decorators/rawFile';
|
import rawFileDecorator from './decorators/rawFile';
|
||||||
|
import allPlugin from './plugins/all';
|
||||||
import configPlugin from './plugins/config';
|
import configPlugin from './plugins/config';
|
||||||
import datasourcePlugin from './plugins/datasource';
|
import datasourcePlugin from './plugins/datasource';
|
||||||
import loggerPlugin from './plugins/logger';
|
import loggerPlugin from './plugins/logger';
|
||||||
|
@ -20,7 +21,6 @@ import prismaPlugin from './plugins/prisma';
|
||||||
import rawRoute from './routes/raw';
|
import rawRoute from './routes/raw';
|
||||||
import uploadsRoute, { uploadsRouteOnResponse } from './routes/uploads';
|
import uploadsRoute, { uploadsRouteOnResponse } from './routes/uploads';
|
||||||
import urlsRoute, { urlsRouteOnResponse } from './routes/urls';
|
import urlsRoute, { urlsRouteOnResponse } from './routes/urls';
|
||||||
import { IncomingMessage } from 'http';
|
|
||||||
|
|
||||||
const dev = process.env.NODE_ENV === 'development';
|
const dev = process.env.NODE_ENV === 'development';
|
||||||
const logger = Logger.get('server');
|
const logger = Logger.get('server');
|
||||||
|
@ -50,7 +50,8 @@ async function start() {
|
||||||
quiet: !dev,
|
quiet: !dev,
|
||||||
hostname: config.core.host,
|
hostname: config.core.host,
|
||||||
port: config.core.port,
|
port: config.core.port,
|
||||||
});
|
})
|
||||||
|
.register(allPlugin);
|
||||||
|
|
||||||
// decorators
|
// decorators
|
||||||
server
|
server
|
||||||
|
@ -151,26 +152,6 @@ async function start() {
|
||||||
server.get('/r/:id', rawRoute.bind(server));
|
server.get('/r/:id', rawRoute.bind(server));
|
||||||
server.get('/', (_, reply) => reply.redirect('/dashboard'));
|
server.get('/', (_, reply) => reply.redirect('/dashboard'));
|
||||||
|
|
||||||
// initialize next routes after all other routes have been registered so theres no overlap
|
|
||||||
server.after(() => {
|
|
||||||
// overrides fastify's default parser so that next.js can handle the request
|
|
||||||
// in the future Zipline's api will probably be entirely handled by fastify
|
|
||||||
async function parser(_: FastifyRequest, payload: IncomingMessage) {
|
|
||||||
return payload;
|
|
||||||
}
|
|
||||||
|
|
||||||
server.addContentTypeParser('text/plain', parser);
|
|
||||||
server.addContentTypeParser('application/json', parser);
|
|
||||||
server.addContentTypeParser('multipart/form-data', parser);
|
|
||||||
|
|
||||||
server.next('/*', { method: 'ALL' });
|
|
||||||
server.next('/api/*', { method: 'ALL' });
|
|
||||||
});
|
|
||||||
|
|
||||||
// server.setDefaultRoute((req, res) => {
|
|
||||||
// server.nextHandle(req, res);
|
|
||||||
// });
|
|
||||||
|
|
||||||
await server.listen({
|
await server.listen({
|
||||||
port: config.core.port,
|
port: config.core.port,
|
||||||
host: config.core.host ?? '0.0.0.0',
|
host: config.core.host ?? '0.0.0.0',
|
||||||
|
|
26
src/server/plugins/all.ts
Normal file
26
src/server/plugins/all.ts
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import { FastifyInstance, FastifyRequest } from 'fastify';
|
||||||
|
import fastifyPlugin from 'fastify-plugin';
|
||||||
|
import { IncomingMessage } from 'http';
|
||||||
|
|
||||||
|
function allRoutes(fastify: FastifyInstance, _: unknown, done: () => void) {
|
||||||
|
// overrides fastify's default parser so that next.js can handle the request
|
||||||
|
// in the future Zipline's api will probably be entirely handled by fastify
|
||||||
|
async function parser(_: FastifyRequest, payload: IncomingMessage) {
|
||||||
|
return payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
fastify.addContentTypeParser('text/plain', parser);
|
||||||
|
fastify.addContentTypeParser('application/json', parser);
|
||||||
|
fastify.addContentTypeParser('multipart/form-data', parser);
|
||||||
|
|
||||||
|
fastify.next('/*', { method: 'ALL' });
|
||||||
|
fastify.next('/api/*', { method: 'ALL' });
|
||||||
|
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
export default fastifyPlugin(allRoutes, {
|
||||||
|
name: 'all',
|
||||||
|
fastify: '4.x',
|
||||||
|
dependencies: ['config', 'logger', 'prisma', 'next'],
|
||||||
|
});
|
|
@ -1,7 +1,7 @@
|
||||||
import { FastifyInstance } from 'fastify';
|
import { FastifyInstance } from 'fastify';
|
||||||
import fastifyPlugin from 'fastify-plugin';
|
import fastifyPlugin from 'fastify-plugin';
|
||||||
import { mkdir } from 'fs/promises';
|
import { mkdir } from 'fs/promises';
|
||||||
import type { Config } from '../../lib/config/Config';
|
import type { Config } from 'lib/config/Config';
|
||||||
|
|
||||||
async function configPlugin(fastify: FastifyInstance, config: Config) {
|
async function configPlugin(fastify: FastifyInstance, config: Config) {
|
||||||
fastify.decorate('config', config);
|
fastify.decorate('config', config);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { FastifyInstance } from 'fastify';
|
import { FastifyInstance } from 'fastify';
|
||||||
import fastifyPlugin from 'fastify-plugin';
|
import fastifyPlugin from 'fastify-plugin';
|
||||||
import type { Datasource } from '../../lib/datasources';
|
import type { Datasource } from 'lib/datasources';
|
||||||
|
|
||||||
function datasourcePlugin(fastify: FastifyInstance, datasource: Datasource, done: () => void) {
|
function datasourcePlugin(fastify: FastifyInstance, datasource: Datasource, done: () => void) {
|
||||||
fastify.decorate('datasource', datasource);
|
fastify.decorate('datasource', datasource);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { FastifyInstance } from 'fastify';
|
import { FastifyInstance } from 'fastify';
|
||||||
import fastifyPlugin from 'fastify-plugin';
|
import fastifyPlugin from 'fastify-plugin';
|
||||||
import Logger from '../../lib/logger';
|
import Logger from 'lib/logger';
|
||||||
|
|
||||||
function loggerPlugin(fastify: FastifyInstance, _: unknown, done: () => void) {
|
function loggerPlugin(fastify: FastifyInstance, _: unknown, done: () => void) {
|
||||||
fastify.decorate('logger', Logger.get('server'));
|
fastify.decorate('logger', Logger.get('server'));
|
||||||
|
|
|
@ -8,13 +8,13 @@ async function nextPlugin(fastify: FastifyInstance, options: NextServerOptions)
|
||||||
const nextServer = next(options);
|
const nextServer = next(options);
|
||||||
const handle = nextServer.getRequestHandler();
|
const handle = nextServer.getRequestHandler();
|
||||||
|
|
||||||
await nextServer.prepare();
|
|
||||||
|
|
||||||
fastify
|
fastify
|
||||||
.decorate('nextServer', nextServer)
|
.decorate('nextServer', nextServer)
|
||||||
.decorate('nextHandle', handle)
|
.decorate('nextHandle', handle)
|
||||||
.decorate('next', route.bind(fastify));
|
.decorate('next', route.bind(fastify));
|
||||||
|
|
||||||
|
return nextServer.prepare();
|
||||||
|
|
||||||
function route(path, opts: any = { method: 'GET' }) {
|
function route(path, opts: any = { method: 'GET' }) {
|
||||||
if (typeof opts.method === 'string') this[opts.method.toLowerCase()](path, opts, handler);
|
if (typeof opts.method === 'string') this[opts.method.toLowerCase()](path, opts, handler);
|
||||||
else if (Array.isArray(opts.method)) {
|
else if (Array.isArray(opts.method)) {
|
||||||
|
@ -31,8 +31,6 @@ async function nextPlugin(fastify: FastifyInstance, options: NextServerOptions)
|
||||||
reply.hijack();
|
reply.hijack();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default fastifyPlugin(nextPlugin, {
|
export default fastifyPlugin(nextPlugin, {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { PrismaClient } from '@prisma/client';
|
import { PrismaClient } from '@prisma/client';
|
||||||
import { FastifyInstance } from 'fastify';
|
import { FastifyInstance } from 'fastify';
|
||||||
import fastifyPlugin from 'fastify-plugin';
|
import fastifyPlugin from 'fastify-plugin';
|
||||||
import { migrations } from '../util';
|
import { migrations } from 'server/util';
|
||||||
|
|
||||||
async function prismaPlugin(fastify: FastifyInstance, _, done) {
|
async function prismaPlugin(fastify: FastifyInstance, _, done) {
|
||||||
process.env.DATABASE_URL = fastify.config.core?.database_url;
|
process.env.DATABASE_URL = fastify.config.core?.database_url;
|
||||||
|
|
|
@ -2,9 +2,9 @@ import { PrismaClient } from '@prisma/client';
|
||||||
import { Migrate } from '@prisma/migrate/dist/Migrate';
|
import { Migrate } from '@prisma/migrate/dist/Migrate';
|
||||||
import { ensureDatabaseExists } from '@prisma/migrate/dist/utils/ensureDatabaseExists';
|
import { ensureDatabaseExists } from '@prisma/migrate/dist/utils/ensureDatabaseExists';
|
||||||
import { ServerResponse } from 'http';
|
import { ServerResponse } from 'http';
|
||||||
import { Datasource } from '../lib/datasources';
|
import { Datasource } from 'lib/datasources';
|
||||||
import Logger from '../lib/logger';
|
import Logger from 'lib/logger';
|
||||||
import { bytesToHuman } from '../lib/utils/bytes';
|
import { bytesToHuman } from 'lib/utils/bytes';
|
||||||
|
|
||||||
export async function migrations() {
|
export async function migrations() {
|
||||||
const logger = Logger.get('database::migrations');
|
const logger = Logger.get('database::migrations');
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
"components/*": ["components/*"],
|
"components/*": ["components/*"],
|
||||||
"hooks/*": ["lib/hooks/*"],
|
"hooks/*": ["lib/hooks/*"],
|
||||||
"middleware/*": ["lib/middleware/*"],
|
"middleware/*": ["lib/middleware/*"],
|
||||||
"lib/*": ["lib/*"]
|
"lib/*": ["lib/*"],
|
||||||
|
"config/*": ["lib/config/*"],
|
||||||
|
"utils/*": ["lib/utils/*"]
|
||||||
},
|
},
|
||||||
"incremental": true
|
"incremental": true
|
||||||
},
|
},
|
||||||
|
|
37
tsup.config.ts
Normal file
37
tsup.config.ts
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import { defineConfig, Options } from 'tsup';
|
||||||
|
|
||||||
|
const opts: Options = {
|
||||||
|
platform: 'node',
|
||||||
|
format: ['cjs'],
|
||||||
|
treeshake: true,
|
||||||
|
clean: true,
|
||||||
|
sourcemap: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default defineConfig([
|
||||||
|
{
|
||||||
|
entryPoints: ['src/server/index.ts'],
|
||||||
|
...opts,
|
||||||
|
},
|
||||||
|
// scripts
|
||||||
|
{
|
||||||
|
entryPoints: ['src/scripts/import-dir.ts'],
|
||||||
|
outDir: 'dist/scripts',
|
||||||
|
...opts,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
entryPoints: ['src/scripts/list-users.ts'],
|
||||||
|
outDir: 'dist/scripts',
|
||||||
|
...opts,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
entryPoints: ['src/scripts/read-config.ts'],
|
||||||
|
outDir: 'dist/scripts',
|
||||||
|
...opts,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
entryPoints: ['src/scripts/set-user.ts'],
|
||||||
|
outDir: 'dist/scripts',
|
||||||
|
...opts,
|
||||||
|
},
|
||||||
|
]);
|
4
zip-env.d.ts
vendored
4
zip-env.d.ts
vendored
|
@ -7,11 +7,11 @@ declare global {
|
||||||
interface Global {
|
interface Global {
|
||||||
prisma: PrismaClient;
|
prisma: PrismaClient;
|
||||||
config: Config;
|
config: Config;
|
||||||
datasource: Datasource
|
datasource: Datasource;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ProcessEnv {
|
interface ProcessEnv {
|
||||||
ZIPLINE_DOCKER_BUILD: string | '1';
|
ZIPLINE_DOCKER_BUILD: string | '1';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue