This commit is contained in:
2026-06-16 09:37:50 -06:00
parent 02ca889bc2
commit 55282963b5
22 changed files with 20 additions and 19 deletions

View File

@@ -22,6 +22,7 @@ COPY package.json bun.lock ./
RUN bun install --frozen-lockfile --production
COPY server/ ./server/
COPY shared/ ./shared/
COPY --from=builder /app/dist ./dist/
RUN mkdir -p data

View File

@@ -2,7 +2,7 @@ import { existsSync, rmSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { afterEach, describe, expect, it, setSystemTime } from 'bun:test'
import { createEmptyBook, createEmptyTeachingDesign } from '../src/domain/teachingDesign'
import { createEmptyBook, createEmptyTeachingDesign } from '../shared/domain/teachingDesign'
import {
createBook, deleteBook, getBook, listBooks, openDb, renameBook, saveBookData,
createUser, findUserByUsername, findUserById, listUsers, deleteUser, updateUserPasswordHash,

View File

@@ -1,5 +1,5 @@
import { Database } from 'bun:sqlite'
import { createEmptyBook, type TeachingBook } from '../src/domain/teachingDesign'
import { createEmptyBook, type TeachingBook } from '../shared/domain/teachingDesign'
export interface BookSummary {
id: string

View File

@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it } from 'bun:test'
import type { Database } from 'bun:sqlite'
import { Hono } from 'hono'
import { createEmptyBook, createEmptyTeachingDesign } from '../../src/domain/teachingDesign'
import { createEmptyBook, createEmptyTeachingDesign } from '../../shared/domain/teachingDesign'
import { openDb } from '../db'
import { createBooksRouter } from './books'

View File

@@ -1,6 +1,6 @@
import type { Database } from 'bun:sqlite'
import { Hono } from 'hono'
import type { TeachingBook } from '../../src/domain/teachingDesign'
import type { TeachingBook } from '../../shared/domain/teachingDesign'
import { createBook, deleteBook, getBook, listBooks, renameBook, saveBookData } from '../db'
export function createBooksRouter(db: Database): Hono {

View File

@@ -2,7 +2,7 @@ import { flushPromises, mount } from '@vue/test-utils'
import { computed } from 'vue'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import App from './App.vue'
import { createEmptyBook } from './domain/teachingDesign'
import { createEmptyBook } from '../shared/domain/teachingDesign'
import * as booksApi from './services/booksApi'
vi.mock('./services/booksApi')

View File

@@ -1,6 +1,6 @@
import { mount } from '@vue/test-utils'
import { describe, expect, it } from 'vitest'
import { createEmptyTeachingDesign } from '../domain/teachingDesign'
import { createEmptyTeachingDesign } from '../../shared/domain/teachingDesign'
import A4Workspace from './A4Workspace.vue'
describe('A4Workspace', () => {

View File

@@ -1,6 +1,6 @@
import { flushPromises, mount } from '@vue/test-utils'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { createEmptyBook } from '../domain/teachingDesign'
import { createEmptyBook } from '../../shared/domain/teachingDesign'
import * as booksApi from '../services/booksApi'
import BookListPage from './BookListPage.vue'

View File

@@ -1,6 +1,6 @@
import { mount } from '@vue/test-utils'
import { describe, expect, it } from 'vitest'
import { createEmptyTeachingDesign } from '../domain/teachingDesign'
import { createEmptyTeachingDesign } from '../../shared/domain/teachingDesign'
import LessonSidebar from './LessonSidebar.vue'
describe('LessonSidebar', () => {

View File

@@ -1,6 +1,6 @@
import { mount } from '@vue/test-utils'
import { describe, expect, it } from 'vitest'
import { createEmptyTeachingDesign } from '../domain/teachingDesign'
import { createEmptyTeachingDesign } from '../../shared/domain/teachingDesign'
import PrintBook from './PrintBook.vue'
describe('PrintBook', () => {

View File

@@ -1,6 +1,6 @@
import { mount } from '@vue/test-utils'
import { describe, expect, it } from 'vitest'
import { createEmptyTeachingDesign, type TeachingDesign } from '../domain/teachingDesign'
import { createEmptyTeachingDesign, type TeachingDesign } from '../../shared/domain/teachingDesign'
import TeachingDesignPage from './TeachingDesignPage.vue'
describe('TeachingDesignPage', () => {

View File

@@ -1,6 +1,6 @@
import { flushPromises, mount } from '@vue/test-utils'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { createEmptyBook, createEmptyTeachingDesign } from '../domain/teachingDesign'
import { createEmptyBook, createEmptyTeachingDesign } from '../../shared/domain/teachingDesign'
import * as booksApi from '../services/booksApi'
import * as zipExporter from '../services/zipExporter'
import BatchGenerateDialog from './BatchGenerateDialog.vue'

View File

@@ -1,6 +1,6 @@
import { flushPromises } from '@vue/test-utils'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { createEmptyBook, createEmptyTeachingDesign, type TeachingBook } from '../domain/teachingDesign'
import { createEmptyBook, createEmptyTeachingDesign, type TeachingBook } from '../../shared/domain/teachingDesign'
import * as booksApi from '../services/booksApi'
import { useTeachingBook } from './useTeachingBook'

View File

@@ -4,7 +4,7 @@ import {
type DesignId,
type TeachingBook,
type TeachingDesign,
} from '../domain/teachingDesign'
} from '../../shared/domain/teachingDesign'
import * as booksApi from '../services/booksApi'
import { parseTeachingDesign } from '../services/markdownParser'
import { sortFilesNaturally } from '../services/naturalSort'

View File

@@ -1,5 +1,5 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { createEmptyBook } from '../domain/teachingDesign'
import { createEmptyBook } from '../../shared/domain/teachingDesign'
import * as booksApi from './booksApi'
describe('booksApi', () => {

View File

@@ -1,4 +1,4 @@
import type { TeachingBook } from '../domain/teachingDesign'
import type { TeachingBook } from '../../shared/domain/teachingDesign'
import { authedFetch } from '../composables/useAuth'
export interface BookSummary {

View File

@@ -4,7 +4,7 @@ import {
type ParseWarning,
type TeachingDesign,
type TeachingStep,
} from '../domain/teachingDesign'
} from '../../shared/domain/teachingDesign'
import { extractMarkdownTable } from './markdownTable'
const BR = /<br\s*\/?>/gi

View File

@@ -1,4 +1,4 @@
import type { TeachingDesign } from '../domain/teachingDesign'
import type { TeachingDesign } from '../../shared/domain/teachingDesign'
function escapeCell(value: string): string {
return value

View File

@@ -1,6 +1,6 @@
import JSZip from 'jszip'
import { describe, expect, it } from 'vitest'
import { createEmptyTeachingDesign } from '../domain/teachingDesign'
import { createEmptyTeachingDesign } from '../../shared/domain/teachingDesign'
import { createBookZip } from './zipExporter'
describe('createBookZip', () => {

View File

@@ -1,5 +1,5 @@
import JSZip from 'jszip'
import type { TeachingDesign } from '../domain/teachingDesign'
import type { TeachingDesign } from '../../shared/domain/teachingDesign'
import { writeTeachingDesignMarkdown } from './markdownWriter'
export async function createBookZip(designs: readonly TeachingDesign[]): Promise<Blob> {