mirror of
https://github.com/tcgdex/cards-database.git
synced 2025-04-22 02:42:09 +00:00
feat: Move internals to bunJS (#459)
This commit is contained in:
parent
f8c1d7dce9
commit
034b7e2cec
29
.github/workflows/test.yml
vendored
Normal file
29
.github/workflows/test.yml
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
name: Test the Data
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
|
||||||
|
- name: Setup BunJS
|
||||||
|
uses: oven-sh/setup-bun@v1
|
||||||
|
|
||||||
|
- name: Install deps
|
||||||
|
run: |
|
||||||
|
bun install --frozen-lockfile
|
||||||
|
cd server
|
||||||
|
bun install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Validate the data
|
||||||
|
run: bun run validate
|
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"files.exclude": {
|
|
||||||
"**/*.js": true
|
|
||||||
}
|
|
||||||
}
|
|
53
Dockerfile
53
Dockerfile
@ -1,44 +1,49 @@
|
|||||||
FROM node:alpine as BUILD_IMAGE
|
FROM docker.io/oven/bun:1-alpine as BUILD_IMAGE
|
||||||
|
|
||||||
WORKDIR /app
|
# go to work folder
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
ADD package.json package-lock.json ./
|
ADD --chown=bun:bun package.json bun.lockb ./
|
||||||
ADD server/package.json server/package-lock.json ./server/
|
ADD --chown=bun:bun server/package.json server/bun.lockb ./server/
|
||||||
|
|
||||||
# install dependencies
|
# install dependencies
|
||||||
RUN npm ci && \
|
RUN bun install --frozen-lockfile && \
|
||||||
cd server && \
|
cd server && \
|
||||||
npm ci
|
bun install --frozen-lockfile
|
||||||
|
|
||||||
# Add project files
|
# Add project files
|
||||||
ADD . .
|
ADD --chown=bun:bun . .
|
||||||
|
|
||||||
# build
|
# build
|
||||||
RUN npm run compile && \
|
RUN cd server && \
|
||||||
cd server && \
|
bun run compile
|
||||||
npm run compile && \
|
|
||||||
npm run build
|
|
||||||
|
|
||||||
# remove dev dependencies
|
# remove dev dependencies (bun do not yet support "prune")
|
||||||
RUN npm prune --production && \
|
RUN cd server && \
|
||||||
cd server && \
|
rm -rf node_modules && \
|
||||||
npm prune --production
|
bun install --frozen-install --production
|
||||||
|
|
||||||
# go to another VM
|
# go to another VM
|
||||||
FROM node:alpine
|
FROM docker.io/oven/bun:1-alpine as PROD_IMAGE
|
||||||
|
|
||||||
# go to folder
|
# inform software to be in production
|
||||||
WORKDIR /app
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
# run as non root user
|
||||||
|
USER bun
|
||||||
|
|
||||||
|
# go to work folder
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
# copy from build image
|
# copy from build image
|
||||||
COPY --from=BUILD_IMAGE /app/server/generated ./generated
|
COPY --chown=bun:bun --from=BUILD_IMAGE /usr/src/app/server/generated ./generated
|
||||||
COPY --from=BUILD_IMAGE /app/server/node_modules ./node_modules
|
COPY --chown=bun:bun --from=BUILD_IMAGE /usr/src/app/server/node_modules ./node_modules
|
||||||
COPY --from=BUILD_IMAGE /app/server/dist ./dist
|
COPY --chown=bun:bun --from=BUILD_IMAGE /usr/src/app/server/src ./src
|
||||||
COPY --from=BUILD_IMAGE /app/server/public ./public
|
COPY --chown=bun:bun --from=BUILD_IMAGE /usr/src/app/server/public ./public
|
||||||
COPY --from=BUILD_IMAGE /app/server/package.json ./package.json
|
COPY --chown=bun:bun --from=BUILD_IMAGE /usr/src/app/server/package.json ./package.json
|
||||||
|
|
||||||
# Expose port
|
# Expose port
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
# run it !
|
# run it !
|
||||||
CMD ["npm", "run", "start"]
|
CMD ["bun", "run", "start"]
|
||||||
|
306
package-lock.json
generated
306
package-lock.json
generated
@ -1,306 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "cards-database",
|
|
||||||
"lockfileVersion": 2,
|
|
||||||
"requires": true,
|
|
||||||
"packages": {
|
|
||||||
"": {
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/node": "^18",
|
|
||||||
"ts-node": "^10",
|
|
||||||
"typescript": "^4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"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": {
|
|
||||||
"version": "0.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
|
|
||||||
"integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@cspotcode/source-map-consumer": "0.8.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tsconfig/node10": {
|
|
||||||
"version": "1.0.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
|
|
||||||
"integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/@tsconfig/node12": {
|
|
||||||
"version": "1.0.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz",
|
|
||||||
"integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/@tsconfig/node14": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/@tsconfig/node16": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/@types/node": {
|
|
||||||
"version": "18.11.12",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz",
|
|
||||||
"integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/acorn": {
|
|
||||||
"version": "8.7.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
|
|
||||||
"integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
|
|
||||||
"dev": true,
|
|
||||||
"bin": {
|
|
||||||
"acorn": "bin/acorn"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/acorn-walk": {
|
|
||||||
"version": "8.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
|
|
||||||
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/arg": {
|
|
||||||
"version": "4.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
|
|
||||||
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/create-require": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/diff": {
|
|
||||||
"version": "4.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
|
||||||
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/make-error": {
|
|
||||||
"version": "1.3.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
|
||||||
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/ts-node": {
|
|
||||||
"version": "10.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz",
|
|
||||||
"integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@cspotcode/source-map-support": "0.7.0",
|
|
||||||
"@tsconfig/node10": "^1.0.7",
|
|
||||||
"@tsconfig/node12": "^1.0.7",
|
|
||||||
"@tsconfig/node14": "^1.0.0",
|
|
||||||
"@tsconfig/node16": "^1.0.2",
|
|
||||||
"acorn": "^8.4.1",
|
|
||||||
"acorn-walk": "^8.1.1",
|
|
||||||
"arg": "^4.1.0",
|
|
||||||
"create-require": "^1.1.0",
|
|
||||||
"diff": "^4.0.1",
|
|
||||||
"make-error": "^1.1.1",
|
|
||||||
"v8-compile-cache-lib": "^3.0.0",
|
|
||||||
"yn": "3.1.1"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"ts-node": "dist/bin.js",
|
|
||||||
"ts-node-cwd": "dist/bin-cwd.js",
|
|
||||||
"ts-node-esm": "dist/bin-esm.js",
|
|
||||||
"ts-node-script": "dist/bin-script.js",
|
|
||||||
"ts-node-transpile-only": "dist/bin-transpile.js",
|
|
||||||
"ts-script": "dist/bin-script-deprecated.js"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@swc/core": ">=1.2.50",
|
|
||||||
"@swc/wasm": ">=1.2.50",
|
|
||||||
"@types/node": "*",
|
|
||||||
"typescript": ">=2.7"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"@swc/core": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@swc/wasm": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/typescript": {
|
|
||||||
"version": "4.6.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
|
|
||||||
"integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
|
|
||||||
"dev": true,
|
|
||||||
"bin": {
|
|
||||||
"tsc": "bin/tsc",
|
|
||||||
"tsserver": "bin/tsserver"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/v8-compile-cache-lib": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/yn": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
|
|
||||||
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@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": {
|
|
||||||
"version": "0.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
|
|
||||||
"integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"@cspotcode/source-map-consumer": "0.8.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@tsconfig/node10": {
|
|
||||||
"version": "1.0.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
|
|
||||||
"integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"@tsconfig/node12": {
|
|
||||||
"version": "1.0.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz",
|
|
||||||
"integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"@tsconfig/node14": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"@tsconfig/node16": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"@types/node": {
|
|
||||||
"version": "18.11.12",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz",
|
|
||||||
"integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"acorn": {
|
|
||||||
"version": "8.7.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
|
|
||||||
"integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"acorn-walk": {
|
|
||||||
"version": "8.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
|
|
||||||
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"arg": {
|
|
||||||
"version": "4.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
|
|
||||||
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"create-require": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"diff": {
|
|
||||||
"version": "4.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
|
||||||
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"make-error": {
|
|
||||||
"version": "1.3.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
|
||||||
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"ts-node": {
|
|
||||||
"version": "10.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz",
|
|
||||||
"integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"@cspotcode/source-map-support": "0.7.0",
|
|
||||||
"@tsconfig/node10": "^1.0.7",
|
|
||||||
"@tsconfig/node12": "^1.0.7",
|
|
||||||
"@tsconfig/node14": "^1.0.0",
|
|
||||||
"@tsconfig/node16": "^1.0.2",
|
|
||||||
"acorn": "^8.4.1",
|
|
||||||
"acorn-walk": "^8.1.1",
|
|
||||||
"arg": "^4.1.0",
|
|
||||||
"create-require": "^1.1.0",
|
|
||||||
"diff": "^4.0.1",
|
|
||||||
"make-error": "^1.1.1",
|
|
||||||
"v8-compile-cache-lib": "^3.0.0",
|
|
||||||
"yn": "3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"typescript": {
|
|
||||||
"version": "4.6.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
|
|
||||||
"integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"v8-compile-cache-lib": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"yn": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
|
|
||||||
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
|
|
||||||
"dev": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +1,10 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"compile": "tsc --project tsconfig.json"
|
"validate": "tsc --noEmit --project tsconfig.json"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^18",
|
"@types/node": "^20",
|
||||||
"ts-node": "^10",
|
"typescript": "^5"
|
||||||
"typescript": "^4"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
server/bun.lockb
Normal file
BIN
server/bun.lockb
Normal file
Binary file not shown.
@ -118,7 +118,7 @@ export async function cardToCardSingle(localId: string, card: Card, lang: Suppor
|
|||||||
* @returns [the local id, the Card object]
|
* @returns [the local id, the Card object]
|
||||||
*/
|
*/
|
||||||
export async function getCard(serie: string, setName: string, id: string): Promise<Card> {
|
export async function getCard(serie: string, setName: string, id: string): Promise<Card> {
|
||||||
return (await import(`../../${DB_PATH}/data/${serie}/${setName}/${id}.js`)).default
|
return (await import(`../../${DB_PATH}/data/${serie}/${setName}/${id}.ts`)).default
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -128,7 +128,7 @@ export async function getCard(serie: string, setName: string, id: string): Promi
|
|||||||
* @returns An array with the 0 = localId, 1 = Card Object
|
* @returns An array with the 0 = localId, 1 = Card Object
|
||||||
*/
|
*/
|
||||||
export async function getCards(lang: SupportedLanguages, set?: Set): Promise<Array<[string, Card]>> {
|
export async function getCards(lang: SupportedLanguages, set?: Set): Promise<Array<[string, Card]>> {
|
||||||
const cards = await smartGlob(`${DB_PATH}/data/${(set && set.serie.name.en) ?? '*'}/${(set && set.name.en) ?? '*'}/*.js`)
|
const cards = await smartGlob(`${DB_PATH}/data/${(set && set.serie.name.en) ?? '*'}/${(set && set.name.en) ?? '*'}/*.ts`)
|
||||||
const list: Array<[string, Card]> = []
|
const list: Array<[string, Card]> = []
|
||||||
for (const path of cards) {
|
for (const path of cards) {
|
||||||
let items = path.split('/')
|
let items = path.split('/')
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
import { Serie, Set, SupportedLanguages } from '../../../interfaces'
|
||||||
|
import { SerieResume, Serie as SerieSingle } from '../../../meta/definitions/api'
|
||||||
|
import { getSets, setToSetSimple } from './setUtil'
|
||||||
import { DB_PATH, smartGlob } from './util'
|
import { DB_PATH, smartGlob } from './util'
|
||||||
import { setToSetSimple, getSets } from './setUtil'
|
|
||||||
import { Serie, SupportedLanguages, Set } from '../../../interfaces'
|
|
||||||
import { Serie as SerieSingle, SerieResume } from '../../../meta/definitions/api'
|
|
||||||
|
|
||||||
export async function getSerie(name: string): Promise<Serie> {
|
export async function getSerie(name: string): Promise<Serie> {
|
||||||
return (await import(`../../${DB_PATH}/data/${name}.js`)).default
|
return (await import(`../../${DB_PATH}/data/${name}.ts`)).default
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function isSerieAvailable(serie: Serie, lang: SupportedLanguages): Promise<boolean> {
|
export async function isSerieAvailable(serie: Serie, lang: SupportedLanguages): Promise<boolean> {
|
||||||
@ -16,7 +16,7 @@ export async function isSerieAvailable(serie: Serie, lang: SupportedLanguages):
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function getSeries(lang: SupportedLanguages): Promise<Array<Serie>> {
|
export async function getSeries(lang: SupportedLanguages): Promise<Array<Serie>> {
|
||||||
let series: Array<Serie> = (await Promise.all((await smartGlob(`${DB_PATH}/data/*.js`))
|
let series: Array<Serie> = (await Promise.all((await smartGlob(`${DB_PATH}/data/*.ts`))
|
||||||
// Find Serie's name
|
// Find Serie's name
|
||||||
.map((it) => it.substring(it.lastIndexOf('/') + 1, it.length - 3))
|
.map((it) => it.substring(it.lastIndexOf('/') + 1, it.length - 3))
|
||||||
// Fetch the Serie
|
// Fetch the Serie
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { Set, SupportedLanguages } from '../../../interfaces'
|
import { Set, SupportedLanguages } from '../../../interfaces'
|
||||||
import { DB_PATH, fetchRemoteFile, setIsLegal, smartGlob } from './util'
|
|
||||||
import { cardToCardSimple, getCards } from './cardUtil'
|
|
||||||
import { SetResume, Set as SetSingle } from '../../../meta/definitions/api'
|
import { SetResume, Set as SetSingle } from '../../../meta/definitions/api'
|
||||||
|
import { cardToCardSimple, getCards } from './cardUtil'
|
||||||
|
import { DB_PATH, fetchRemoteFile, setIsLegal, smartGlob } from './util'
|
||||||
|
|
||||||
interface t {
|
interface t {
|
||||||
[key: string]: Set
|
[key: string]: Set
|
||||||
@ -20,11 +20,11 @@ export function isSetAvailable(set: Set, lang: SupportedLanguages): boolean {
|
|||||||
export async function getSet(name: string, serie = '*'): Promise<Set> {
|
export async function getSet(name: string, serie = '*'): Promise<Set> {
|
||||||
if (!setCache[name]) {
|
if (!setCache[name]) {
|
||||||
try {
|
try {
|
||||||
const [path] = await smartGlob(`${DB_PATH}/data/${serie}/${name}.js`)
|
const [path] = await smartGlob(`${DB_PATH}/data/${serie}/${name}.ts`)
|
||||||
setCache[name] = (await import(`../../${path}`)).default
|
setCache[name] = (await import(`../../${path}`)).default
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
console.error(`Error trying to import importing (${`db/data/${serie}/${name}.js`})`)
|
console.error(`Error trying to import importing (${`db/data/${serie}/${name}.ts`})`)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -34,7 +34,7 @@ export async function getSet(name: string, serie = '*'): Promise<Set> {
|
|||||||
// Dont use cache as it wont necessary have them all
|
// Dont use cache as it wont necessary have them all
|
||||||
export async function getSets(serie = '*', lang: SupportedLanguages): Promise<Array<Set>> {
|
export async function getSets(serie = '*', lang: SupportedLanguages): Promise<Array<Set>> {
|
||||||
// list sets names
|
// list sets names
|
||||||
const rawSets = (await smartGlob(`${DB_PATH}/data/${serie}/*.js`)).map((set) => set.substring(set.lastIndexOf('/') + 1, set.lastIndexOf('.')))
|
const rawSets = (await smartGlob(`${DB_PATH}/data/${serie}/*.ts`)).map((set) => set.substring(set.lastIndexOf('/') + 1, set.lastIndexOf('.')))
|
||||||
// Fetch sets
|
// Fetch sets
|
||||||
const sets = (await Promise.all(rawSets.map((set) => getSet(set, serie))))
|
const sets = (await Promise.all(rawSets.map((set) => getSet(set, serie))))
|
||||||
// Filter sets
|
// Filter sets
|
||||||
|
3998
server/package-lock.json
generated
3998
server/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -3,10 +3,9 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"compile": "ts-node --project ../tsconfig.json compiler/index.ts",
|
"compile": "bun compiler/index.ts",
|
||||||
"dev": "ts-node-dev -T src/index.ts",
|
"dev": "bun --watch --hot src/index.ts",
|
||||||
"build": "tsc --project tsconfig.json",
|
"start": "bun src/index.ts"
|
||||||
"start": "node dist/index.js"
|
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1,10 +1,23 @@
|
|||||||
{
|
{
|
||||||
"include": ["data", "server/compiler", "interfaces.d.ts"],
|
"include": ["data", "server/compiler", "interfaces.d.ts"],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "es5",
|
"lib": ["ESNext"],
|
||||||
"module": "commonjs",
|
"target": "ESNext",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleDetection": "force",
|
||||||
|
"skipLibCheck": true,
|
||||||
|
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"resolveJsonModule": true
|
"resolveJsonModule": true,
|
||||||
|
|
||||||
|
|
||||||
|
// Bundler mode
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"allowImportingTsExtensions": true,
|
||||||
|
|
||||||
|
// disabled because it would produce too much errors
|
||||||
|
"verbatimModuleSyntax": false,
|
||||||
|
"noEmit": true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user