- add the v1 AvatarDefinition schema, bounded parser, strict validation, semantic catalog, pure geometry, scene generation, and deterministic playback to @bible-strong/avatar-core - add the React 19 renderer with semantic controls, SSR-safe embedded/floating layouts, direct frame updates, pointer and keyboard movement, constraints, callbacks, and accessible controls - add real tarball packaging and a clean React/Vite consumer using the exported Strobi definition - add Studio semantic-key authoring, runtime readiness, JSON download/copy, bundled-key recovery, concise errors, targeted local-project clearing, npm guidance, syntax highlighting, and a runnable package preview - preserve the historical ZIP and Studio project exports, regenerate the standalone engine, and synchronize English, French, and Simplified Chinese copy - add focused contract, playback, renderer, interaction, persistence, export, and localization coverage - archive the completed runtime and semantic-curation specs, retain the Vite performance draft, and record the engineering session in TIMELOG.md Validation: - pnpm check: 19 test files, 162 tests, typecheck, engine freshness, package builds, and Studio production build passed - npm pack dry runs: 30 core files and 10 React files - package smoke: real tarballs installed, typechecked, and built outside the workspace - browser checks: semantic playback, embedded/floating render, drag, mobile overflow, runtime export recovery, formatted copy, syntax colors, and live package preview Publication remains disabled: both packages stay private and AGPL-3.0-only pending licensing and repository metadata approval. Vue and Angular adapters remain deferred.
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { fileURLToPath } from 'node:url'
|
|
|
|
import { defineConfig } from 'vite'
|
|
|
|
export default defineConfig({
|
|
build: {
|
|
lib: {
|
|
entry: {
|
|
index: fileURLToPath(new URL('./src/index.ts', import.meta.url)),
|
|
geometry: fileURLToPath(new URL('./src/geometry.ts', import.meta.url)),
|
|
body: fileURLToPath(new URL('./src/body.ts', import.meta.url)),
|
|
surfaces: fileURLToPath(new URL('./src/surfaces.ts', import.meta.url)),
|
|
ambientMotion: fileURLToPath(new URL('./src/ambientMotion.ts', import.meta.url)),
|
|
},
|
|
formats: ['es'],
|
|
},
|
|
sourcemap: true,
|
|
rollupOptions: {
|
|
external: ['ajv/dist/2020.js'],
|
|
output: { entryFileNames: '[name].js', chunkFileNames: 'chunks/[name]-[hash].js' },
|
|
},
|
|
},
|
|
plugins: [
|
|
{
|
|
name: 'copy-avatar-schema',
|
|
closeBundle: async () => {
|
|
const { copyFile } = await import('node:fs/promises')
|
|
await copyFile(
|
|
fileURLToPath(new URL('./src/avatarDefinition.schema.json', import.meta.url)),
|
|
fileURLToPath(new URL('./dist/avatarDefinition.schema.json', import.meta.url))
|
|
)
|
|
},
|
|
},
|
|
],
|
|
})
|