Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.idea/
.env
coverage/
dist/
sqlite/
redoc-static.html

Expand Down
20 changes: 11 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,26 @@ FROM base as base_deps
ENV CI=1

COPY .npmrc package.json pnpm-lock.yaml ./
COPY patches/ patches/

RUN corepack enable
RUN corepack prepare --activate

FROM base_deps as runtime_deps

# Install dependencies
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
pnpm install --frozen-lockfile --production
pnpm install --frozen-lockfile

FROM base_deps as build

COPY knexfile.js tsconfig.json tsup.config.ts ./
COPY src/ src/

RUN pnpm run build

FROM base_deps AS docs

COPY docs/openapi.yaml docs/openapi.yaml

# Install dependencies
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
pnpm install --frozen-lockfile

RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
pnpm run docs

Expand All @@ -43,7 +45,7 @@ COPY .npmrc knexfile.js package.json pnpm-lock.yaml ./
COPY src/ src/
COPY migrations/ migrations/

COPY --from=runtime_deps /app/node_modules/ node_modules/
COPY --from=build /app/dist dist/
COPY --from=docs /app/redoc-static.html .

# Run with...
Expand All @@ -52,4 +54,4 @@ ENV NODE_OPTIONS="--enable-source-maps"
# Warnings disabled, we know what we're doing and they're annoying
ENV NODE_NO_WARNINGS=1

CMD ["node", "--run", "start"]
CMD ["node", "dist/index.js"]
4 changes: 4 additions & 0 deletions knexfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,9 @@ export default {
useNullAsDefault: true,
connection: {
filename: `./sqlite/${process.env.NODE_ENV ?? "development"}.sqlite3`,
options: {
nativeBinding:
process.env.NODE_ENV === "production" ? "./dist/better_sqlite3.node" : undefined,
},
},
}
36 changes: 20 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"*.{js,cjs,mjs,ts,cts,mts,json}": ["biome check --fix"]
},
"scripts": {
"build": "tsup",
"dev": "node --experimental-strip-types --experimental-transform-types --watch src/index.ts",
"docs": "pnpm --package=@redocly/cli dlx redocly build-docs docs/openapi.yaml",
"docs:dev": "onchange --initial --kill docs/openapi.yaml -- pnpm --silent run docs",
Expand All @@ -34,38 +35,38 @@
"resolutions": {
"esbuild": "0.25.0"
},
"dependencies": {
"devDependencies": {
"@antfu/eslint-config": "4.4.0",
"@biomejs/biome": "1.9.4",
"@hono/node-server": "1.13.8",
"@hono/sentry": "1.2.0",
"@hono/standard-validator": "0.1.2",
"@sentry/node": "9.3.0",
"better-sqlite3": "11.8.1",
"hono": "4.7.2",
"is-ci": "4.1.0",
"knex": "3.1.0",
"ofetch": "1.4.1",
"pino": "9.6.0",
"valibot": "1.0.0-rc.3"
},
"devDependencies": {
"@antfu/eslint-config": "4.3.0",
"@biomejs/biome": "1.9.4",
"@standard-schema/spec": "1.0.0",
"@tsconfig/node22": "22.0.0",
"@tsconfig/strictest": "2.0.5",
"@types/json-schema": "7.0.15",
"@types/node": "22.13.8",
"@types/node": "22.13.9",
"@vitest/coverage-v8": "3.0.7",
"better-sqlite3": "11.8.1",
"dotenv": "16.4.7",
"eslint": "9.21.0",
"hono": "4.7.2",
"is-ci": "4.1.0",
"knex": "3.1.0",
"mentoss": "0.7.1",
"nano-staged": "0.8.0",
"onchange": "7.1.0",
"pino": "9.6.0",
"pino-pretty": "13.0.0",
"simple-git-hooks": "2.11.1",
"tsconfig-paths": "4.2.0",
"type-fest": "4.36.0",
"tsup": "8.4.0",
"type-fest": "4.37.0",
"typescript": "5.8.2",
"vitest": "3.0.7"
"valibot": "1.0.0-rc.3",
"vitest": "3.0.7",
"xior": "0.7.0"
},
"pnpm": {
"overrides": {
Expand All @@ -83,6 +84,9 @@
"safe-buffer": "npm:@nolyfill/safe-buffer@^1"
},
"onlyBuiltDependencies": ["better-sqlite3"],
"ignoredBuiltDependencies": ["@biomejs/biome", "esbuild", "simple-git-hooks"]
"ignoredBuiltDependencies": ["@biomejs/biome", "esbuild", "simple-git-hooks"],
"patchedDependencies": {
"knex": "patches/knex.patch"
}
}
}
21 changes: 21 additions & 0 deletions patches/knex.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
diff --git a/lib/dialects/index.js b/lib/dialects/index.js
index 559a366685d6517de819d1925233e972089928e7..476dcc63fd84758a7c65b1d4b493b73460f62764 100644
--- a/lib/dialects/index.js
+++ b/lib/dialects/index.js
@@ -4,16 +4,6 @@ exports.getDialectByNameOrAlias = void 0;
const { resolveClientNameWithAliases } = require('../util/helpers');
const dbNameToDialectLoader = Object.freeze({
'better-sqlite3': () => require('./better-sqlite3'),
- cockroachdb: () => require('./cockroachdb'),
- mssql: () => require('./mssql'),
- mysql: () => require('./mysql'),
- mysql2: () => require('./mysql2'),
- oracle: () => require('./oracle'),
- oracledb: () => require('./oracledb'),
- pgnative: () => require('./pgnative'),
- postgres: () => require('./postgres'),
- redshift: () => require('./redshift'),
- sqlite3: () => require('./sqlite3'),
});
/**
* Gets the Dialect object with the given client name or throw an
Loading