mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 00:11:37 -06:00
build(deps): upgrade non-TypeScript dependencies
Keep TypeScript at 6.0.3 while moving the remaining server and client packages onto their current supported releases. Allow the PWA asset generator 2 peer range because vite-plugin-pwa still declares the compatible version 1 range.
This commit is contained in:
+6
-6
@@ -71,7 +71,7 @@
|
|||||||
"@tiptap/starter-kit": "^3.31.3",
|
"@tiptap/starter-kit": "^3.31.3",
|
||||||
"@tiptap/vue-3": "^3.31.3",
|
"@tiptap/vue-3": "^3.31.3",
|
||||||
"@types/howler": "^2.2.13",
|
"@types/howler": "^2.2.13",
|
||||||
"@vueuse/core": "^14.4.0",
|
"@vueuse/core": "^15.0.0",
|
||||||
"canvas-confetti": "^1.9.4",
|
"canvas-confetti": "^1.9.4",
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
"driver.js": "^1.8.0",
|
"driver.js": "^1.8.0",
|
||||||
"echarts": "^6.1.0",
|
"echarts": "^6.1.0",
|
||||||
"howler": "^2.2.4",
|
"howler": "^2.2.4",
|
||||||
"intl-messageformat": "^11.2.15",
|
"intl-messageformat": "^12.1.2",
|
||||||
"pinia": "^4.0.3",
|
"pinia": "^4.0.3",
|
||||||
"reka-ui": "^2.10.5",
|
"reka-ui": "^2.10.5",
|
||||||
"socket.io-client": "^4.8.4",
|
"socket.io-client": "^4.8.4",
|
||||||
@@ -101,9 +101,9 @@
|
|||||||
"@types/canvas-confetti": "^1.9.0",
|
"@types/canvas-confetti": "^1.9.0",
|
||||||
"@types/jsdom": "^30.0.0",
|
"@types/jsdom": "^30.0.0",
|
||||||
"@types/node": "^26.6.3",
|
"@types/node": "^26.6.3",
|
||||||
"@vite-pwa/assets-generator": "^1.0.4",
|
"@vite-pwa/assets-generator": "^2.0.0",
|
||||||
"@vitejs/plugin-vue": "^6.0.9",
|
"@vitejs/plugin-vue": "^6.0.9",
|
||||||
"@vitest/coverage-v8": "^4.1.11",
|
"@vitest/coverage-v8": "^5.0.2",
|
||||||
"@vitest/eslint-plugin": "^1.6.27",
|
"@vitest/eslint-plugin": "^1.6.27",
|
||||||
"@vue/eslint-config-typescript": "^14.9.0",
|
"@vue/eslint-config-typescript": "^14.9.0",
|
||||||
"@vue/test-utils": "^2.5.1",
|
"@vue/test-utils": "^2.5.1",
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
"eslint-plugin-oxlint": "~1.86.0",
|
"eslint-plugin-oxlint": "~1.86.0",
|
||||||
"eslint-plugin-vue": "~10.11.1",
|
"eslint-plugin-vue": "~10.11.1",
|
||||||
"jiti": "^2.7.0",
|
"jiti": "^2.7.0",
|
||||||
"jsdom": "~30.0.1",
|
"jsdom": "~30.1.1",
|
||||||
"npm-run-all2": "^9.0.3",
|
"npm-run-all2": "^9.0.3",
|
||||||
"oxlint": "~1.86.0",
|
"oxlint": "~1.86.0",
|
||||||
"prettier": "3.9.9",
|
"prettier": "3.9.9",
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
"typescript": "~6.0.3",
|
"typescript": "~6.0.3",
|
||||||
"vite": "^8.3.1",
|
"vite": "^8.3.1",
|
||||||
"vite-plugin-vue-devtools": "^8.2.1",
|
"vite-plugin-vue-devtools": "^8.2.1",
|
||||||
"vitest": "^4.1.11",
|
"vitest": "^5.0.2",
|
||||||
"vue-tsc": "^3.3.11"
|
"vue-tsc": "^3.3.11"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ describe('PodcastEditDetailsSheet', () => {
|
|||||||
|
|
||||||
it('uploads a chosen artwork file and emits the new versioned url', async () => {
|
it('uploads a chosen artwork file and emits the new versioned url', async () => {
|
||||||
apiMock.mockResolvedValue(jsonResponse({ id: 12, imageUrl: '/api/v1/podcasts/12/artwork?v=99', artworkUpdatedAt: '2026-07-31T00:00:00.000Z' }))
|
apiMock.mockResolvedValue(jsonResponse({ id: 12, imageUrl: '/api/v1/podcasts/12/artwork?v=99', artworkUpdatedAt: '2026-07-31T00:00:00.000Z' }))
|
||||||
|
const createObjectURL = vi.spyOn(URL, 'createObjectURL').mockReturnValue('blob:podcast-artwork')
|
||||||
const wrapper = await mountSheet()
|
const wrapper = await mountSheet()
|
||||||
const input = wrapper.get('input[type="file"]')
|
const input = wrapper.get('input[type="file"]')
|
||||||
const file = new File(['bytes'], 'artwork.png', { type: 'image/png' })
|
const file = new File(['bytes'], 'artwork.png', { type: 'image/png' })
|
||||||
@@ -183,7 +184,10 @@ describe('PodcastEditDetailsSheet', () => {
|
|||||||
expect(url).toBe('/api/v1/podcasts/12/artwork')
|
expect(url).toBe('/api/v1/podcasts/12/artwork')
|
||||||
expect(init?.method).toBe('POST')
|
expect(init?.method).toBe('POST')
|
||||||
expect(init?.body).toBeInstanceOf(FormData)
|
expect(init?.body).toBeInstanceOf(FormData)
|
||||||
|
expect(createObjectURL).toHaveBeenCalledWith(file)
|
||||||
expect(wrapper.emitted('artwork-changed')?.[0]?.[0]).toMatchObject({ artworkUpdatedAt: '2026-07-31T00:00:00.000Z' })
|
expect(wrapper.emitted('artwork-changed')?.[0]?.[0]).toMatchObject({ artworkUpdatedAt: '2026-07-31T00:00:00.000Z' })
|
||||||
|
|
||||||
|
createObjectURL.mockRestore()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('uploads artwork from a url without touching the metadata endpoint', async () => {
|
it('uploads artwork from a url without touching the metadata endpoint', async () => {
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ function installBrowserGlobals() {
|
|||||||
addEventListener: vi.fn<() => void>(),
|
addEventListener: vi.fn<() => void>(),
|
||||||
removeEventListener: vi.fn<() => void>(),
|
removeEventListener: vi.fn<() => void>(),
|
||||||
}) as unknown as MediaQueryList
|
}) as unknown as MediaQueryList
|
||||||
|
Object.defineProperty(globalThis, 'visualViewport', {
|
||||||
|
configurable: true,
|
||||||
|
value: { scale: 1 },
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Foliate navigation', () => {
|
describe('Foliate navigation', () => {
|
||||||
@@ -267,11 +271,6 @@ describe('Foliate navigation', () => {
|
|||||||
it('still snaps ordinary paginated touch gestures', () => {
|
it('still snaps ordinary paginated touch gestures', () => {
|
||||||
const paginator = new Paginator() as InstanceType<typeof Paginator> & EventTarget
|
const paginator = new Paginator() as InstanceType<typeof Paginator> & EventTarget
|
||||||
const snap = vi.spyOn(paginator, 'snap').mockImplementation(() => {})
|
const snap = vi.spyOn(paginator, 'snap').mockImplementation(() => {})
|
||||||
const originalVisualViewport = Object.getOwnPropertyDescriptor(globalThis, 'visualViewport')
|
|
||||||
Object.defineProperty(globalThis, 'visualViewport', {
|
|
||||||
configurable: true,
|
|
||||||
value: { scale: 1 },
|
|
||||||
})
|
|
||||||
const animationFrame = vi.spyOn(globalThis, 'requestAnimationFrame').mockImplementation((callback) => {
|
const animationFrame = vi.spyOn(globalThis, 'requestAnimationFrame').mockImplementation((callback) => {
|
||||||
callback(0)
|
callback(0)
|
||||||
return 0
|
return 0
|
||||||
@@ -300,8 +299,6 @@ describe('Foliate navigation', () => {
|
|||||||
expect(snap).toHaveBeenCalledWith(0, undefined)
|
expect(snap).toHaveBeenCalledWith(0, undefined)
|
||||||
|
|
||||||
animationFrame.mockRestore()
|
animationFrame.mockRestore()
|
||||||
if (originalVisualViewport) Object.defineProperty(globalThis, 'visualViewport', originalVisualViewport)
|
|
||||||
else Reflect.deleteProperty(globalThis, 'visualViewport')
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('maps physical left and right navigation using OPF RTL page progression', async () => {
|
it('maps physical left and right navigation using OPF RTL page progression', async () => {
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ graph LR
|
|||||||
| Layer | Tech | Location |
|
| Layer | Tech | Location |
|
||||||
| ------------ | ------------------------------- | ----------------- |
|
| ------------ | ------------------------------- | ----------------- |
|
||||||
| Frontend | Vue 3, Tailwind CSS v4, Vite | `client/` |
|
| Frontend | Vue 3, Tailwind CSS v4, Vite | `client/` |
|
||||||
| Backend | NestJS 11, Fastify, Drizzle ORM | `server/` |
|
| Backend | NestJS 12, Fastify, Drizzle ORM | `server/` |
|
||||||
| Database | PostgreSQL 18, pgvector | Docker container |
|
| Database | PostgreSQL 18, pgvector | Docker container |
|
||||||
| Shared types | TypeScript | `packages/types/` |
|
| Shared types | TypeScript | `packages/types/` |
|
||||||
| Real-time | Socket.IO | Server + Client |
|
| Real-time | Socket.IO | Server + Client |
|
||||||
|
|||||||
Generated
+957
-1152
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,9 @@ packageExtensions:
|
|||||||
"@embedpdf/utils@2.15.1":
|
"@embedpdf/utils@2.15.1":
|
||||||
dependencies:
|
dependencies:
|
||||||
"@embedpdf/models": 2.15.1
|
"@embedpdf/models": 2.15.1
|
||||||
|
peerDependencyRules:
|
||||||
|
allowedVersions:
|
||||||
|
"vite-plugin-pwa>@vite-pwa/assets-generator": "^2.0.0"
|
||||||
allowBuilds:
|
allowBuilds:
|
||||||
"@ffmpeg-installer/darwin-arm64": true
|
"@ffmpeg-installer/darwin-arm64": true
|
||||||
"@ffmpeg-installer/darwin-x64": true
|
"@ffmpeg-installer/darwin-x64": true
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# BookOrbit - Server
|
# BookOrbit - Server
|
||||||
|
|
||||||
NestJS 11 backend running on Fastify.
|
NestJS 12 backend running on Fastify.
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
|
|||||||
+21
-21
@@ -62,18 +62,18 @@
|
|||||||
"@fastify/helmet": "^13.1.1",
|
"@fastify/helmet": "^13.1.1",
|
||||||
"@fastify/multipart": "^10.1.2",
|
"@fastify/multipart": "^10.1.2",
|
||||||
"@fastify/static": "^10.1.5",
|
"@fastify/static": "^10.1.5",
|
||||||
"@nestjs/common": "^11.2.6",
|
"@nestjs/common": "^12.1.1",
|
||||||
"@nestjs/config": "^4.0.4",
|
"@nestjs/config": "^12.0.1",
|
||||||
"@nestjs/core": "^11.2.6",
|
"@nestjs/core": "^12.1.1",
|
||||||
"@nestjs/jwt": "^11.0.2",
|
"@nestjs/jwt": "^12.0.2",
|
||||||
"@nestjs/passport": "^11.0.5",
|
"@nestjs/passport": "^12.0.0",
|
||||||
"@nestjs/platform-fastify": "^11.2.6",
|
"@nestjs/platform-fastify": "^12.1.1",
|
||||||
"@nestjs/platform-socket.io": "^11.2.6",
|
"@nestjs/platform-socket.io": "^12.1.1",
|
||||||
"@nestjs/schedule": "^6.1.3",
|
"@nestjs/schedule": "^12.0.2",
|
||||||
"@nestjs/swagger": "^11.4.7",
|
"@nestjs/swagger": "^12.0.2",
|
||||||
"@nestjs/terminus": "^11.1.1",
|
"@nestjs/terminus": "^12.1.0",
|
||||||
"@nestjs/throttler": "^6.7.1",
|
"@nestjs/throttler": "^6.7.1",
|
||||||
"@nestjs/websockets": "^11.2.6",
|
"@nestjs/websockets": "^12.1.1",
|
||||||
"@types/archiver": "^8.0.0",
|
"@types/archiver": "^8.0.0",
|
||||||
"archiver": "~8.0.0",
|
"archiver": "~8.0.0",
|
||||||
"bcryptjs": "^3.0.3",
|
"bcryptjs": "^3.0.3",
|
||||||
@@ -84,17 +84,17 @@
|
|||||||
"cron": "^4.4.0",
|
"cron": "^4.4.0",
|
||||||
"date-fns-tz": "^3.2.0",
|
"date-fns-tz": "^3.2.0",
|
||||||
"drizzle-orm": "^0.45.3",
|
"drizzle-orm": "^0.45.3",
|
||||||
"fast-xml-parser": "^5.11.1",
|
"fast-xml-parser": "^5.11.2",
|
||||||
"fastest-levenshtein": "^1.0.16",
|
"fastest-levenshtein": "^1.0.16",
|
||||||
"fastify": "^5.12.5",
|
"fastify": "^5.12.5",
|
||||||
"iconv-lite": "^0.7.3",
|
"iconv-lite": "^0.7.3",
|
||||||
"jose": "^6.2.12",
|
"jose": "^6.2.12",
|
||||||
"langs": "^2.0.0",
|
"langs": "^2.0.0",
|
||||||
"ms": "^2.1.3",
|
"ms": "^2.1.3",
|
||||||
"mysql2": "^3.24.4",
|
"mysql2": "^3.24.5",
|
||||||
"nestjs-pino": "^4.6.1",
|
"nestjs-pino": "^5.2.1",
|
||||||
"node-unrar-js": "^2.0.2",
|
"node-unrar-js": "^2.0.2",
|
||||||
"nodemailer": "^9.1.1",
|
"nodemailer": "^10.0.12",
|
||||||
"passport": "^0.7.0",
|
"passport": "^0.7.0",
|
||||||
"passport-jwt": "^4.0.1",
|
"passport-jwt": "^4.0.1",
|
||||||
"pdf-lib": "^1.17.1",
|
"pdf-lib": "^1.17.1",
|
||||||
@@ -114,11 +114,11 @@
|
|||||||
"@eslint/js": "^10.0.1",
|
"@eslint/js": "^10.0.1",
|
||||||
"@ffmpeg-installer/ffmpeg": "^1.1.0",
|
"@ffmpeg-installer/ffmpeg": "^1.1.0",
|
||||||
"@ffprobe-installer/ffprobe": "^2.1.2",
|
"@ffprobe-installer/ffprobe": "^2.1.2",
|
||||||
"@nestjs/cli": "^11.0.24",
|
"@nestjs/cli": "^12.0.8",
|
||||||
"@nestjs/schematics": "^11.1.0",
|
"@nestjs/schematics": "^12.0.6",
|
||||||
"@nestjs/testing": "^11.2.6",
|
"@nestjs/testing": "^12.1.1",
|
||||||
"@swc/cli": "^0.8.1",
|
"@swc/cli": "^0.8.1",
|
||||||
"@swc/core": "^1.16.2",
|
"@swc/core": "^1.16.12",
|
||||||
"@types/bcrypt": "^6.0.0",
|
"@types/bcrypt": "^6.0.0",
|
||||||
"@types/express": "^5.0.6",
|
"@types/express": "^5.0.6",
|
||||||
"@types/langs": "^2.0.5",
|
"@types/langs": "^2.0.5",
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
"@types/pg": "^8.23.1",
|
"@types/pg": "^8.23.1",
|
||||||
"@types/supertest": "^7.2.1",
|
"@types/supertest": "^7.2.1",
|
||||||
"@types/unzipper": "^0.10.11",
|
"@types/unzipper": "^0.10.11",
|
||||||
"@vitest/coverage-v8": "^4.1.11",
|
"@vitest/coverage-v8": "^5.0.2",
|
||||||
"drizzle-kit": "^0.31.11",
|
"drizzle-kit": "^0.31.11",
|
||||||
"eslint": "^10.11.0",
|
"eslint": "^10.11.0",
|
||||||
"eslint-config-prettier": "^10.1.8",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
@@ -144,6 +144,6 @@
|
|||||||
"tsx": "^4.23.15",
|
"tsx": "^4.23.15",
|
||||||
"typescript": "^6.0.3",
|
"typescript": "^6.0.3",
|
||||||
"typescript-eslint": "^8.71.0",
|
"typescript-eslint": "^8.71.0",
|
||||||
"vitest": "^4.1.11"
|
"vitest": "^5.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { SCHEDULE_CRON_OPTIONS } from '@nestjs/schedule/dist/schedule.constants';
|
|
||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
|
|
||||||
import { SYSTEM_TIME_ZONE } from '../utils/timezone.utils';
|
import { SYSTEM_TIME_ZONE } from '../utils/timezone.utils';
|
||||||
@@ -11,9 +10,8 @@ describe('SystemCron', () => {
|
|||||||
run(): void {}
|
run(): void {}
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(Reflect.getMetadata(SCHEDULE_CRON_OPTIONS, TestJob.prototype.run)).toEqual({
|
const metadata = Reflect.getMetadataKeys(TestJob.prototype.run).map((key) => Reflect.getMetadata(key, TestJob.prototype.run));
|
||||||
cronTime: '0 3 * * *',
|
|
||||||
timeZone: SYSTEM_TIME_ZONE,
|
expect(metadata).toContainEqual({ cronTime: '0 3 * * *', timeZone: SYSTEM_TIME_ZONE });
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user