diff --git a/.github/workflows/benchmarks-jmh.yml b/.github/workflows/benchmarks-jmh.yml index 47af30596..caa77e5fc 100644 --- a/.github/workflows/benchmarks-jmh.yml +++ b/.github/workflows/benchmarks-jmh.yml @@ -45,7 +45,7 @@ jobs: run: ./mvnw -B -ntp -f fonts/pom.xml -DskipTests install - name: Install root artifact (graph-compose + test-jar) - run: ./mvnw -B -ntp -DskipTests install -pl . + run: ./mvnw -B -ntp -DskipTests install -pl :graph-compose-core - name: Build the JMH runner jar run: ./mvnw -B -ntp -f benchmarks/pom.xml clean package -DskipTests diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9d8b4db0..b4ec6bdfb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,7 +49,7 @@ jobs: run: | ./mvnw -B -ntp clean \ "-Dtest=EnginePdfBoundaryTest,CanonicalTemplateComposerPdfBoundaryTest,PdfRenderInterfaceGuardTest,DocumentationCoverageTest,DocumentationExamplesTest,CanonicalSurfaceGuardTest,TemplateComposeApiTest,VersionConsistencyGuardTest" \ - test + test -pl :graph-compose-core changes: # Path-based change detection for selective CI on pull requests. Emits the @@ -84,20 +84,20 @@ jobs: - 'mvnw.cmd' - '.github/workflows/ci.yml' core: - - 'src/**' - - 'pom.xml' + - 'core/src/**' + - 'core/pom.xml' perf: - - 'src/**' + - 'core/src/**' - 'render-pdf/**' - 'templates/**' - 'benchmarks/**' - - 'pom.xml' + - 'core/pom.xml' # Published library modules + build toolchain. A change here runs the # full JDK matrix (it ships to users across JVMs); a PR touching only # the non-published test/build infra (qa, coverage, examples, # benchmarks, docs) runs the baseline JDK alone. jvm: - - 'src/**' + - 'core/src/**' - 'render-pdf/**' - 'render-docx/**' - 'render-pptx/**' @@ -107,7 +107,7 @@ jobs: - 'fonts/**' - 'emoji/**' - 'bundle/**' - - 'pom.xml' + - 'core/pom.xml' - '.mvn/**' - 'mvnw' - 'mvnw.cmd' @@ -154,14 +154,15 @@ jobs: # the classpath and so cannot live in the engine's own test scope), and the # graph-compose-coverage aggregator (report-only JaCoCo over core + qa exec). # -am pulls the fonts / emoji upstreams; bundle / examples / benchmarks are excluded. - run: ./mvnw -B -ntp -f aggregator/pom.xml clean verify -pl :graph-compose-core,:graph-compose-render-pdf,:graph-compose-render-docx,:graph-compose-render-pptx,:graph-compose-templates,:graph-compose-testing,:graph-compose-qa,:graph-compose-coverage -am + run: ./mvnw -B -ntp clean verify -pl :graph-compose-core,:graph-compose-render-pdf,:graph-compose-render-docx,:graph-compose-render-pptx,:graph-compose-templates,:graph-compose-testing,:graph-compose-qa,:graph-compose-coverage -am - name: Generate Javadoc # Run only on the baseline JDK — Javadoc output is identical # across JVMs and one pass is enough to catch broken @link - # references. + # references. Scoped to the engine (its public API is the doclint + # gate); a bare reactor pass would also lint the dev-only benchmarks. if: matrix.java == '17' - run: ./mvnw -B -ntp javadoc:javadoc + run: ./mvnw -B -ntp javadoc:javadoc -pl :graph-compose-core - name: Upload aggregate coverage report # Report-only: the cross-module JaCoCo report (core coverage counting the @@ -209,7 +210,7 @@ jobs: run: ./mvnw -B -ntp -f emoji/pom.xml -DskipTests install - name: Install root artifact (graph-compose-core) - run: ./mvnw -B -ntp -DskipTests install -pl . + run: ./mvnw -B -ntp -DskipTests install -pl :graph-compose-core - name: Install graph-compose-render-pdf (the PDF backend the wrapper brings) # The graph-compose wrapper depends on render-pdf so a bare graph-compose @@ -267,7 +268,7 @@ jobs: binary-compat: name: Binary Compatibility (japicmp vs pom baseline) # japicmp diffs the graph-compose-core public surface, so it only matters - # when the core module (root `src/**` or `pom.xml`) changed. + # when the core module (`core/src/**` or `core/pom.xml`) changed. if: github.event_name == 'pull_request' && needs.changes.outputs.core == 'true' needs: [architecture-and-documentation-guards, changes] runs-on: ubuntu-latest @@ -287,20 +288,20 @@ jobs: - name: Compare public API against baseline # The `japicmp` profile resolves the baseline release pinned - # by the `japicmp.baseline` property in pom.xml (via the + # by the `japicmp.baseline` property in core/pom.xml (via the # profile-local JitPack repository) and diffs it against the # freshly-built artifact. Fails the job on any binary- # incompatible modification to the public surface. Source- # incompatible changes are reported only (phased policy). # See CHANGELOG v1.6.6 "Build" notes for the policy rationale. - run: ./mvnw -B -ntp -DskipTests -P japicmp verify -pl . + run: ./mvnw -B -ntp -DskipTests -P japicmp verify -pl :graph-compose-core - name: Upload japicmp report if: always() uses: actions/upload-artifact@v7 with: name: japicmp-report-${{ github.run_id }} - path: target/japicmp/** + path: core/target/japicmp/** if-no-files-found: ignore perf-smoke: @@ -331,7 +332,7 @@ jobs: run: ./mvnw -B -ntp -f fonts/pom.xml -DskipTests install - name: Install root artifact - run: ./mvnw -B -ntp -DskipTests install -pl . + run: ./mvnw -B -ntp -DskipTests install -pl :graph-compose-core - name: Install graph-compose-render-pdf (consumed by the benchmarks module) # benchmarks call buildPdf and reference the PDF backend types directly, so @@ -426,7 +427,7 @@ jobs: run: ./mvnw -B -ntp -f fonts/pom.xml -DskipTests install - name: Install root artifact - run: ./mvnw -B -ntp -DskipTests install -pl . + run: ./mvnw -B -ntp -DskipTests install -pl :graph-compose-core - name: Install graph-compose-render-pdf (consumed by the benchmarks module) # benchmarks call buildPdf and reference the PDF backend types directly, so diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9bb512a96..6bea0b703 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -51,10 +51,10 @@ jobs: queries: security-and-quality - name: Build (library module only) - # `-pl .` scopes the analysis to the published artifact and matches + # `-pl :graph-compose-core` scopes the analysis to the published artifact and matches # the canonical verify gate. Examples/benchmarks are intentionally # excluded — they ship no production code. - run: ./mvnw -B -ntp -DskipTests -pl . package + run: ./mvnw -B -ntp -DskipTests -pl :graph-compose-core package - name: Perform CodeQL analysis uses: github/codeql-action/analyze@v4 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0964206aa..3f2f5a84b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -93,7 +93,7 @@ jobs: # depth against a tag pushed from a broken branch by mistake. # The publish step below would also fail at signing/upload, # but failing here surfaces a clearer error. - run: ./mvnw -B -ntp clean verify -pl . + run: ./mvnw -B -ntp clean verify -pl :graph-compose-core - name: Publish engine to Maven Central # Activates the release profile (sources + javadoc + gpg sign + @@ -102,7 +102,7 @@ jobs: # which blocks until Sonatype's validator confirms validation. # The release profile also disables the tests-jar execution, so # only the main + sources + javadoc + pom artefacts are uploaded. - run: ./mvnw -B -ntp -P release -DskipTests -Dgpg.skip=false deploy + run: ./mvnw -B -ntp -f core/pom.xml -P release -DskipTests -Dgpg.skip=false deploy env: CENTRAL_USERNAME: ${{ secrets.CENTRAL_USERNAME }} CENTRAL_TOKEN: ${{ secrets.CENTRAL_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2d136fe03..f45b659ba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,7 +45,7 @@ jobs: cache: maven - name: Verify (gate the release on a green build) - run: ./mvnw -B -ntp clean verify -pl . + run: ./mvnw -B -ntp clean verify -pl :graph-compose-core - name: Extract CHANGELOG section for the tag id: notes diff --git a/.gitignore b/.gitignore index a06a2440f..80f2e7668 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ build/ ### Mac OS ### .DS_Store /logs/ +core/logs/ benchmarks/logs/ qa/logs/ render-pdf/logs/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 521adbe6b..260e8a92c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -102,9 +102,9 @@ At the **2.0 GA** merge the branches take their long-term roles: ## Repository map -- `src/main/java/com/demcha/compose/document/api`, `document.dsl`, `document.node`, `document.style`, `document.table`, `document.image`, `document.output`, `document.exceptions`, `document.snapshot` +- `core/src/main/java/com/demcha/compose/document/api`, `document.dsl`, `document.node`, `document.style`, `document.table`, `document.image`, `document.output`, `document.exceptions`, `document.snapshot` Public canonical authoring surface — `DocumentSession`, the DSL builders, semantic node records, public style values, table types, image types, backend-neutral output options (metadata / watermark / protection / header-footer), and snapshot DTOs -- `src/main/java/com/demcha/compose/document/layout` +- `core/src/main/java/com/demcha/compose/document/layout` Canonical functional layout pipeline: `LayoutCompiler`, `BuiltInNodeDefinitions`, `TableLayoutSupport`, `PreparedNode`, `PlacedFragment` - `render-pdf/src/main/java/com/demcha/compose/document/backend/fixed/pdf` — module **graph-compose-render-pdf** PDF backend: `PdfFixedLayoutBackend`, fragment handlers, and the option translators that bridge canonical types to PDFBox @@ -112,22 +112,22 @@ At the **2.0 GA** merge the branches take their long-term roles: Semantic exporters `DocxSemanticBackend` (Apache POI based) and `PptxSemanticBackend` (manifest skeleton), under `com.demcha.compose.document.backend.semantic.{docx,pptx}` - `templates/src/main/java/com/demcha/compose/document/templates/*` — module **graph-compose-templates** Built-in templates (CV, cover letter, invoice, proposal, weekly schedule), DTOs, themes, registries, and scene composition helpers -- `src/main/java/com/demcha/compose/document/showcase` +- `core/src/main/java/com/demcha/compose/document/showcase` `FontShowcase` (bundled-font preview renderer) — stays in the core engine -- `src/main/java/com/demcha/compose/engine/*` +- `core/src/main/java/com/demcha/compose/engine/*` Internal shared engine foundation under the canonical surface (measure, paginate, place, render). Not part of the recommended public API -- `src/main/java/com/demcha/compose/font` +- `core/src/main/java/com/demcha/compose/font` Public font registry, `FontName`, default fonts -- `src/test/java/com/demcha/documentation/*` +- `core/src/test/java/com/demcha/documentation/*` Examples used to keep README/documentation snippets honest -- `src/test/java/com/demcha/compose/engine/integration/*` +- `core/src/test/java/com/demcha/compose/engine/integration/*` End-to-end behaviour checks for the engine foundation's layout, pagination, and rendering paths -- `src/test/java/com/demcha/compose/document/*` +- `core/src/test/java/com/demcha/compose/document/*` Canonical API, DSL, layout, backend, and template tests - `assets/readme/*` Screenshots used by the README -- `aggregator/pom.xml` - Maven reactor (aggregator POM); release tooling propagates the version bump across all modules through it in one pass +- `pom.xml` + The repository-root Maven reactor (aggregator POM); release tooling propagates the version bump across all modules through it in one pass. The engine itself lives in `core/pom.xml` (`graph-compose-core`) - `baselines/` Committed performance-benchmark baselines: `current-speed-full.json` is the median reference the `11-verdict-current-speed` gate judges runs against; `BASELINE_SUMMARY.md` / `COMPARISON.md` are historical pre-optimization snapshots @@ -196,7 +196,7 @@ not need any of them. - Builders and layout code get text width and line metrics from `TextMeasurementSystem`, not from the active renderer, `PdfFont`, or PDFBox objects. -- Keep `src/main/java/com/demcha/compose/engine/components/*` free of +- Keep `core/src/main/java/com/demcha/compose/engine/components/*` free of `org.apache.pdfbox` and `com.demcha.compose.engine.render.pdf` imports. - When you add a new fragment kind, register its handler with @@ -219,13 +219,13 @@ Keep the entity core thin: The rules above are enforced by tests: - canonical surface guards: - [CanonicalSurfaceGuardTest.java](./src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java), - [PublicApiNoEngineLeakTest.java](./src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java), - [SemanticLayerNoPdfBoxDependencyTest.java](./src/test/java/com/demcha/documentation/SemanticLayerNoPdfBoxDependencyTest.java), + [CanonicalSurfaceGuardTest.java](./core/src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java), + [PublicApiNoEngineLeakTest.java](./core/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java), + [SemanticLayerNoPdfBoxDependencyTest.java](./core/src/test/java/com/demcha/documentation/SemanticLayerNoPdfBoxDependencyTest.java), [DocumentationExamplesTest.java](qa/src/test/java/com/demcha/documentation/DocumentationExamplesTest.java), - [DocumentationCoverageTest.java](./src/test/java/com/demcha/documentation/DocumentationCoverageTest.java) + [DocumentationCoverageTest.java](./core/src/test/java/com/demcha/documentation/DocumentationCoverageTest.java) - engine internals guards: - [EnginePdfBoundaryTest.java](./src/test/java/com/demcha/compose/engine/architecture/EnginePdfBoundaryTest.java), + [EnginePdfBoundaryTest.java](./core/src/test/java/com/demcha/compose/engine/architecture/EnginePdfBoundaryTest.java), [PdfRenderInterfaceGuardTest.java](render-pdf/src/test/java/com/demcha/compose/engine/render/pdf/PdfRenderInterfaceGuardTest.java) ## Adding a new feature @@ -323,7 +323,7 @@ marker, a new layout system, a new render-pass session): For text-heavy primitives, also read: -- [TextMeasurementSystem.java](./src/main/java/com/demcha/compose/engine/measurement/TextMeasurementSystem.java) +- [TextMeasurementSystem.java](./core/src/main/java/com/demcha/compose/engine/measurement/TextMeasurementSystem.java) - [docs/architecture/overview.md](./docs/architecture/overview.md) - [docs/contributing/implementation-guide.md](./docs/contributing/implementation-guide.md) @@ -338,12 +338,12 @@ Choose the smallest tests that match the change: - For README or docs examples: [DocumentationExamplesTest.java](qa/src/test/java/com/demcha/documentation/DocumentationExamplesTest.java) - For engine/backend boundary changes: - [EnginePdfBoundaryTest.java](./src/test/java/com/demcha/compose/engine/architecture/EnginePdfBoundaryTest.java) + [EnginePdfBoundaryTest.java](./core/src/test/java/com/demcha/compose/engine/architecture/EnginePdfBoundaryTest.java) [PdfRenderInterfaceGuardTest.java](render-pdf/src/test/java/com/demcha/compose/engine/render/pdf/PdfRenderInterfaceGuardTest.java) - For PDF fragment-handler dispatch changes: [PdfRenderInterfaceGuardTest.java](render-pdf/src/test/java/com/demcha/compose/engine/render/pdf/PdfRenderInterfaceGuardTest.java) - For layout/positioning behavior: - [ComputedPositionTest.java](./src/test/java/com/demcha/compose/engine/components/layout/ComputedPositionTest.java) + [ComputedPositionTest.java](./core/src/test/java/com/demcha/compose/engine/components/layout/ComputedPositionTest.java) - For pagination and multi-page behavior: [PaginationEdgeCaseTest.java](qa/src/test/java/com/demcha/compose/document/api/PaginationEdgeCaseTest.java) - For Templates v2 CV / cover-letter presets: diff --git a/aggregator/README.md b/aggregator/README.md deleted file mode 100644 index 3e44ca2b2..000000000 --- a/aggregator/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# GraphCompose Build Aggregator - -**Internal reactor module — not published to Maven Central.** Do not depend on it. - -`aggregator/` (artifact `graph-compose-build`) is the non-published reactor parent that builds -the whole project in one pass — the engine and its sibling modules plus the `examples`, -`benchmarks`, and `qa` children. It exists to give a single build entry point and to host the -aggregator-child modules (examples / benchmarks / qa) that inherit their version from it. - -The **published** artifacts (`graph-compose-core`, `graph-compose`, the render backends, -`graph-compose-templates`, `graph-compose-testing`, `graph-compose-bundle`) are standalone -poms — they do **not** use this aggregator as their Maven parent; it only lists them as -`` so a single reactor build compiles everything. - -Build everything: - -```bash -./mvnw -f aggregator/pom.xml clean verify -``` - -Module layout and per-package ownership: [docs/architecture/package-map.md](../docs/architecture/package-map.md). -See [CONTRIBUTING.md](../CONTRIBUTING.md) for the workflow. diff --git a/aggregator/pom.xml b/aggregator/pom.xml deleted file mode 100644 index cae393a9a..000000000 --- a/aggregator/pom.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - 4.0.0 - - io.github.demchaav - graph-compose-build - 2.0.0-SNAPSHOT - pom - - GraphCompose Build Aggregator - - Non-published reactor aggregator. Builds the library plus the examples - and benchmarks modules in one pass and gives a single entry point for - `versions:set`, so a version bump propagates to every module at once. - This is NOT a Maven parent and is NOT published to JitPack: the library - root pom.xml stays standalone so consumer coordinates never change. - - Usage: - mvn -f aggregator/pom.xml -DskipTests install # build everything - mvn -f aggregator/pom.xml versions:set -DnewVersion=X # bump all modules - - - - - true - - 1.0.0 - - 1.0.0 - - 0.8.12 - - - - - .. - ../render-pdf - ../wrapper - ../fonts - ../emoji - ../render-docx - ../render-pptx - ../templates - ../testing - ../bundle - ../examples - ../benchmarks - ../qa - - ../coverage - - diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 010e5ab32..a19e2f483 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -8,7 +8,7 @@ io.github.demchaav graph-compose-build 2.0.0-SNAPSHOT - ../aggregator/pom.xml + ../pom.xml graph-compose-benchmarks diff --git a/core/pom.xml b/core/pom.xml new file mode 100644 index 000000000..472186b30 --- /dev/null +++ b/core/pom.xml @@ -0,0 +1,742 @@ + + + 4.0.0 + + io.github.demchaav + graph-compose-core + 2.0.0-SNAPSHOT + + GraphCompose Core + A declarative layout engine for programmatic document generation, implemented primarily in Java. This is the lean engine coordinate; depend on the `graph-compose` artifact for the drop-in, PDF-capable install. + https://github.com/DemchaAV/GraphCompose + + + + MIT License + https://opensource.org/licenses/MIT + repo + + + + + + DemchaAV + Artem Demchyshyn + demchishynartem@gmail.com + https://github.com/DemchaAV + + Lead Developer + Architect + + UTC 0 + + + + + scm:git:https://github.com/DemchaAV/GraphCompose.git + scm:git:ssh://git@github.com/DemchaAV/GraphCompose.git + https://github.com/DemchaAV/GraphCompose/tree/main + + + + + UTF-8 + 17 + + + 0.64.8 + 1.5.37 + 1.18.46 + 2.0.18 + + + 3.27.7 + 6.1.1 + 5.23.0 + 1.18.11 + 1.4.2 + 1.9.3 + + + 1.0.0 + 1.0.0 + + + 0.11.0 + 3.15.0 + 3.6.3 + 3.2.8 + 3.5.0 + 3.12.0 + 3.4.0 + 3.5.6 + 0.8.12 + + + + + + 3.8.0 + 17 + + + 0.26.1 + v1.7.0 + + + true + + + + + + org.junit + junit-bom + ${junit.bom.version} + pom + import + + + + + + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + + + com.vladsch.flexmark + flexmark + ${flexmark.version} + + + com.vladsch.flexmark + flexmark-util-ast + ${flexmark.version} + + + com.vladsch.flexmark + flexmark-util-data + ${flexmark.version} + + + + + + io.github.demchaav + graph-compose-fonts + ${graphcompose.fonts.version} + test + + + io.github.demchaav + graph-compose-emoji + ${graphcompose.emoji.version} + test + + + + ch.qos.logback + logback-classic + ${logback.version} + test + + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + net.bytebuddy + byte-buddy + + + + + net.bytebuddy + byte-buddy + ${byteBuddy.version} + test + + + org.mockito + mockito-junit-jupiter + ${mockito.version} + test + + + + + com.tngtech.archunit + archunit + ${archunit.version} + test + + + + + net.jqwik + jqwik + ${jqwik.version} + test + + + + + + + + + + src/test/resources + + + + + + + + org.apache.maven.plugins + maven-clean-plugin + 3.5.0 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.4 + + + org.apache.maven.plugins + maven-site-plugin + 3.22.0 + + + org.apache.maven.plugins + maven-resources-plugin + 3.5.0 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.4 + + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + ${maven.enforcer.plugin.version} + + + enforce-toolchain-and-plugin-versions + validate + + enforce + + + + + [${enforcer.requireMavenVersion},) + GraphCompose requires Maven ${enforcer.requireMavenVersion} or newer. + + + [${enforcer.requireJavaVersion},) + GraphCompose requires JDK ${enforcer.requireJavaVersion} or newer. + + + true + true + true + Every plugin must declare an explicit non-LATEST/RELEASE version. See PR-7.1 (exec-plugin drift) for the lesson. + + + true + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven.compiler.plugin.version} + + ${maven.compiler.release} + + + org.projectlombok + lombok + ${lombok.version} + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven.surefire.plugin.version} + + + @{argLine} -javaagent:${settings.localRepository}/org/mockito/mockito-core/${mockito.version}/mockito-core-${mockito.version}.jar + + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco.plugin.version} + + + jacoco-prepare-agent + + prepare-agent + + + + jacoco-report + test + + report + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + attach-test-jar + + test-jar + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven.javadoc.plugin.version} + + all + true + public + true + com.demcha.compose.document + + + + + + + + + release + + + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + attach-test-jar + none + + + + + org.apache.maven.plugins + maven-source-plugin + ${maven.source.plugin.version} + + + attach-sources + package + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven.javadoc.plugin.version} + + + attach-javadocs + package + + jar + + + + none + false + true + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + ${maven.gpg.plugin.version} + + + sign-artifacts + verify + + sign + + + ${gpg.skip} + + --pinentry-mode + loopback + + + + + + + + org.sonatype.central + central-publishing-maven-plugin + ${central.publishing.plugin.version} + true + + central + false + validated + + + + + + + + + japicmp + + + jitpack.io + https://jitpack.io + + + + + + com.github.siom79.japicmp + japicmp-maven-plugin + ${japicmp.version} + + + japicmp-against-baseline + verify + + cmp + + + + + + + com.github.DemchaAV + GraphCompose + ${japicmp.baseline} + + + + + ${project.build.directory}/${project.build.finalName}.jar + + + + true + + false + false + false + true + true + + + com.demcha.compose.document.layout.payloads + + com.demcha.compose.engine.measurement.TextMeasurementSystem + + com.demcha.compose.ConfigLoader + + + + + + + + + diff --git a/src/main/java/com/demcha/compose/GraphCompose.java b/core/src/main/java/com/demcha/compose/GraphCompose.java similarity index 100% rename from src/main/java/com/demcha/compose/GraphCompose.java rename to core/src/main/java/com/demcha/compose/GraphCompose.java diff --git a/src/main/java/com/demcha/compose/document/api/Beta.java b/core/src/main/java/com/demcha/compose/document/api/Beta.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/Beta.java rename to core/src/main/java/com/demcha/compose/document/api/Beta.java diff --git a/src/main/java/com/demcha/compose/document/api/DocumentChromeOptions.java b/core/src/main/java/com/demcha/compose/document/api/DocumentChromeOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/DocumentChromeOptions.java rename to core/src/main/java/com/demcha/compose/document/api/DocumentChromeOptions.java diff --git a/src/main/java/com/demcha/compose/document/api/DocumentLayoutCache.java b/core/src/main/java/com/demcha/compose/document/api/DocumentLayoutCache.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/DocumentLayoutCache.java rename to core/src/main/java/com/demcha/compose/document/api/DocumentLayoutCache.java diff --git a/src/main/java/com/demcha/compose/document/api/DocumentPageBackgrounds.java b/core/src/main/java/com/demcha/compose/document/api/DocumentPageBackgrounds.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/DocumentPageBackgrounds.java rename to core/src/main/java/com/demcha/compose/document/api/DocumentPageBackgrounds.java diff --git a/src/main/java/com/demcha/compose/document/api/DocumentPageSize.java b/core/src/main/java/com/demcha/compose/document/api/DocumentPageSize.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/DocumentPageSize.java rename to core/src/main/java/com/demcha/compose/document/api/DocumentPageSize.java diff --git a/src/main/java/com/demcha/compose/document/api/DocumentRenderingFacade.java b/core/src/main/java/com/demcha/compose/document/api/DocumentRenderingFacade.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/DocumentRenderingFacade.java rename to core/src/main/java/com/demcha/compose/document/api/DocumentRenderingFacade.java diff --git a/src/main/java/com/demcha/compose/document/api/DocumentSession.java b/core/src/main/java/com/demcha/compose/document/api/DocumentSession.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/DocumentSession.java rename to core/src/main/java/com/demcha/compose/document/api/DocumentSession.java diff --git a/src/main/java/com/demcha/compose/document/api/Internal.java b/core/src/main/java/com/demcha/compose/document/api/Internal.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/Internal.java rename to core/src/main/java/com/demcha/compose/document/api/Internal.java diff --git a/src/main/java/com/demcha/compose/document/api/MultiSectionDocument.java b/core/src/main/java/com/demcha/compose/document/api/MultiSectionDocument.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/MultiSectionDocument.java rename to core/src/main/java/com/demcha/compose/document/api/MultiSectionDocument.java diff --git a/src/main/java/com/demcha/compose/document/api/MultiSectionDocumentBuilder.java b/core/src/main/java/com/demcha/compose/document/api/MultiSectionDocumentBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/MultiSectionDocumentBuilder.java rename to core/src/main/java/com/demcha/compose/document/api/MultiSectionDocumentBuilder.java diff --git a/src/main/java/com/demcha/compose/document/api/PageBackgroundFill.java b/core/src/main/java/com/demcha/compose/document/api/PageBackgroundFill.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/PageBackgroundFill.java rename to core/src/main/java/com/demcha/compose/document/api/PageBackgroundFill.java diff --git a/src/main/java/com/demcha/compose/document/api/PageMarginRule.java b/core/src/main/java/com/demcha/compose/document/api/PageMarginRule.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/PageMarginRule.java rename to core/src/main/java/com/demcha/compose/document/api/PageMarginRule.java diff --git a/src/main/java/com/demcha/compose/document/api/SessionChromeApi.java b/core/src/main/java/com/demcha/compose/document/api/SessionChromeApi.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/SessionChromeApi.java rename to core/src/main/java/com/demcha/compose/document/api/SessionChromeApi.java diff --git a/src/main/java/com/demcha/compose/document/api/SessionFontApi.java b/core/src/main/java/com/demcha/compose/document/api/SessionFontApi.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/SessionFontApi.java rename to core/src/main/java/com/demcha/compose/document/api/SessionFontApi.java diff --git a/src/main/java/com/demcha/compose/document/api/SessionLayoutApi.java b/core/src/main/java/com/demcha/compose/document/api/SessionLayoutApi.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/SessionLayoutApi.java rename to core/src/main/java/com/demcha/compose/document/api/SessionLayoutApi.java diff --git a/src/main/java/com/demcha/compose/document/api/package-info.java b/core/src/main/java/com/demcha/compose/document/api/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/api/package-info.java rename to core/src/main/java/com/demcha/compose/document/api/package-info.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/BackendProviders.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/BackendProviders.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/BackendProviders.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/BackendProviders.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutBackend.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutBackend.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutBackend.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutBackend.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutBackendProvider.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutBackendProvider.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutBackendProvider.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutBackendProvider.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutRenderContext.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutRenderContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutRenderContext.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutRenderContext.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutRenderer.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutRenderer.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutRenderer.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/FixedLayoutRenderer.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/FontMetricsProvider.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/FontMetricsProvider.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/FontMetricsProvider.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/FontMetricsProvider.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/MeasurementResources.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/MeasurementResources.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/MeasurementResources.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/MeasurementResources.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/SectionUnit.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/SectionUnit.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/SectionUnit.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/SectionUnit.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/package-info.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/package-info.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/package-info.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBarcodeOptions.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBarcodeOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBarcodeOptions.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBarcodeOptions.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBarcodeType.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBarcodeType.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBarcodeType.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBarcodeType.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBookmarkOptions.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBookmarkOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBookmarkOptions.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfBookmarkOptions.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfHeaderFooterOptions.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfHeaderFooterOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfHeaderFooterOptions.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfHeaderFooterOptions.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfHeaderFooterZone.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfHeaderFooterZone.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfHeaderFooterZone.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfHeaderFooterZone.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfLinkOptions.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfLinkOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfLinkOptions.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfLinkOptions.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfMetadataOptions.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfMetadataOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfMetadataOptions.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfMetadataOptions.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfProtectionOptions.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfProtectionOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfProtectionOptions.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfProtectionOptions.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfViewerPreferencesOptions.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfViewerPreferencesOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfViewerPreferencesOptions.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfViewerPreferencesOptions.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkLayer.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkLayer.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkLayer.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkLayer.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkOptions.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkOptions.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkOptions.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkPosition.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkPosition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkPosition.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/PdfWatermarkPosition.java diff --git a/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/package-info.java b/core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/package-info.java rename to core/src/main/java/com/demcha/compose/document/backend/fixed/pdf/options/package-info.java diff --git a/src/main/java/com/demcha/compose/document/backend/package-info.java b/core/src/main/java/com/demcha/compose/document/backend/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/package-info.java rename to core/src/main/java/com/demcha/compose/document/backend/package-info.java diff --git a/src/main/java/com/demcha/compose/document/backend/semantic/SemanticBackend.java b/core/src/main/java/com/demcha/compose/document/backend/semantic/SemanticBackend.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/semantic/SemanticBackend.java rename to core/src/main/java/com/demcha/compose/document/backend/semantic/SemanticBackend.java diff --git a/src/main/java/com/demcha/compose/document/backend/semantic/SemanticExportContext.java b/core/src/main/java/com/demcha/compose/document/backend/semantic/SemanticExportContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/semantic/SemanticExportContext.java rename to core/src/main/java/com/demcha/compose/document/backend/semantic/SemanticExportContext.java diff --git a/src/main/java/com/demcha/compose/document/backend/semantic/SemanticExportManifest.java b/core/src/main/java/com/demcha/compose/document/backend/semantic/SemanticExportManifest.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/semantic/SemanticExportManifest.java rename to core/src/main/java/com/demcha/compose/document/backend/semantic/SemanticExportManifest.java diff --git a/src/main/java/com/demcha/compose/document/backend/semantic/package-info.java b/core/src/main/java/com/demcha/compose/document/backend/semantic/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/backend/semantic/package-info.java rename to core/src/main/java/com/demcha/compose/document/backend/semantic/package-info.java diff --git a/src/main/java/com/demcha/compose/document/chart/AxisSpec.java b/core/src/main/java/com/demcha/compose/document/chart/AxisSpec.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/AxisSpec.java rename to core/src/main/java/com/demcha/compose/document/chart/AxisSpec.java diff --git a/src/main/java/com/demcha/compose/document/chart/BarChartLayout.java b/core/src/main/java/com/demcha/compose/document/chart/BarChartLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/BarChartLayout.java rename to core/src/main/java/com/demcha/compose/document/chart/BarChartLayout.java diff --git a/src/main/java/com/demcha/compose/document/chart/BarGrouping.java b/core/src/main/java/com/demcha/compose/document/chart/BarGrouping.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/BarGrouping.java rename to core/src/main/java/com/demcha/compose/document/chart/BarGrouping.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartData.java b/core/src/main/java/com/demcha/compose/document/chart/ChartData.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartData.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartData.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartDefaults.java b/core/src/main/java/com/demcha/compose/document/chart/ChartDefaults.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartDefaults.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartDefaults.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartLayoutResolver.java b/core/src/main/java/com/demcha/compose/document/chart/ChartLayoutResolver.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartLayoutResolver.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartLayoutResolver.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartLayoutSupport.java b/core/src/main/java/com/demcha/compose/document/chart/ChartLayoutSupport.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartLayoutSupport.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartLayoutSupport.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartPrimitive.java b/core/src/main/java/com/demcha/compose/document/chart/ChartPrimitive.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartPrimitive.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartPrimitive.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartSize.java b/core/src/main/java/com/demcha/compose/document/chart/ChartSize.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartSize.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartSize.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartSpec.java b/core/src/main/java/com/demcha/compose/document/chart/ChartSpec.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartSpec.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartSpec.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartStyle.java b/core/src/main/java/com/demcha/compose/document/chart/ChartStyle.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartStyle.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartStyle.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartTextMetrics.java b/core/src/main/java/com/demcha/compose/document/chart/ChartTextMetrics.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartTextMetrics.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartTextMetrics.java diff --git a/src/main/java/com/demcha/compose/document/chart/ChartTheme.java b/core/src/main/java/com/demcha/compose/document/chart/ChartTheme.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ChartTheme.java rename to core/src/main/java/com/demcha/compose/document/chart/ChartTheme.java diff --git a/src/main/java/com/demcha/compose/document/chart/LegendPosition.java b/core/src/main/java/com/demcha/compose/document/chart/LegendPosition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/LegendPosition.java rename to core/src/main/java/com/demcha/compose/document/chart/LegendPosition.java diff --git a/src/main/java/com/demcha/compose/document/chart/LineChartLayout.java b/core/src/main/java/com/demcha/compose/document/chart/LineChartLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/LineChartLayout.java rename to core/src/main/java/com/demcha/compose/document/chart/LineChartLayout.java diff --git a/src/main/java/com/demcha/compose/document/chart/LineInterpolation.java b/core/src/main/java/com/demcha/compose/document/chart/LineInterpolation.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/LineInterpolation.java rename to core/src/main/java/com/demcha/compose/document/chart/LineInterpolation.java diff --git a/src/main/java/com/demcha/compose/document/chart/NiceScale.java b/core/src/main/java/com/demcha/compose/document/chart/NiceScale.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/NiceScale.java rename to core/src/main/java/com/demcha/compose/document/chart/NiceScale.java diff --git a/src/main/java/com/demcha/compose/document/chart/NumberFormatSpec.java b/core/src/main/java/com/demcha/compose/document/chart/NumberFormatSpec.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/NumberFormatSpec.java rename to core/src/main/java/com/demcha/compose/document/chart/NumberFormatSpec.java diff --git a/src/main/java/com/demcha/compose/document/chart/PieChartLayout.java b/core/src/main/java/com/demcha/compose/document/chart/PieChartLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/PieChartLayout.java rename to core/src/main/java/com/demcha/compose/document/chart/PieChartLayout.java diff --git a/src/main/java/com/demcha/compose/document/chart/PointMarker.java b/core/src/main/java/com/demcha/compose/document/chart/PointMarker.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/PointMarker.java rename to core/src/main/java/com/demcha/compose/document/chart/PointMarker.java diff --git a/src/main/java/com/demcha/compose/document/chart/SliceLabelMode.java b/core/src/main/java/com/demcha/compose/document/chart/SliceLabelMode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/SliceLabelMode.java rename to core/src/main/java/com/demcha/compose/document/chart/SliceLabelMode.java diff --git a/src/main/java/com/demcha/compose/document/chart/ValueLabelMode.java b/core/src/main/java/com/demcha/compose/document/chart/ValueLabelMode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/ValueLabelMode.java rename to core/src/main/java/com/demcha/compose/document/chart/ValueLabelMode.java diff --git a/src/main/java/com/demcha/compose/document/chart/package-info.java b/core/src/main/java/com/demcha/compose/document/chart/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/chart/package-info.java rename to core/src/main/java/com/demcha/compose/document/chart/package-info.java diff --git a/src/main/java/com/demcha/compose/document/debug/package-info.java b/core/src/main/java/com/demcha/compose/document/debug/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/debug/package-info.java rename to core/src/main/java/com/demcha/compose/document/debug/package-info.java diff --git a/src/main/java/com/demcha/compose/document/debug/snapshot/LayoutGraphSnapshotExtractor.java b/core/src/main/java/com/demcha/compose/document/debug/snapshot/LayoutGraphSnapshotExtractor.java similarity index 100% rename from src/main/java/com/demcha/compose/document/debug/snapshot/LayoutGraphSnapshotExtractor.java rename to core/src/main/java/com/demcha/compose/document/debug/snapshot/LayoutGraphSnapshotExtractor.java diff --git a/src/main/java/com/demcha/compose/document/debug/snapshot/PageIndexExtractor.java b/core/src/main/java/com/demcha/compose/document/debug/snapshot/PageIndexExtractor.java similarity index 100% rename from src/main/java/com/demcha/compose/document/debug/snapshot/PageIndexExtractor.java rename to core/src/main/java/com/demcha/compose/document/debug/snapshot/PageIndexExtractor.java diff --git a/src/main/java/com/demcha/compose/document/debug/snapshot/package-info.java b/core/src/main/java/com/demcha/compose/document/debug/snapshot/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/debug/snapshot/package-info.java rename to core/src/main/java/com/demcha/compose/document/debug/snapshot/package-info.java diff --git a/src/main/java/com/demcha/compose/document/dsl/AbstractFlowBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/AbstractFlowBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/AbstractFlowBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/AbstractFlowBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/BarcodeBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/BarcodeBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/BarcodeBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/BarcodeBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/CanvasLayerBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/CanvasLayerBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/CanvasLayerBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/CanvasLayerBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/CodeChip.java b/core/src/main/java/com/demcha/compose/document/dsl/CodeChip.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/CodeChip.java rename to core/src/main/java/com/demcha/compose/document/dsl/CodeChip.java diff --git a/src/main/java/com/demcha/compose/document/dsl/DividerBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/DividerBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/DividerBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/DividerBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/DocumentDsl.java b/core/src/main/java/com/demcha/compose/document/dsl/DocumentDsl.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/DocumentDsl.java rename to core/src/main/java/com/demcha/compose/document/dsl/DocumentDsl.java diff --git a/src/main/java/com/demcha/compose/document/dsl/EllipseBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/EllipseBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/EllipseBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/EllipseBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/HeadingBarStyle.java b/core/src/main/java/com/demcha/compose/document/dsl/HeadingBarStyle.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/HeadingBarStyle.java rename to core/src/main/java/com/demcha/compose/document/dsl/HeadingBarStyle.java diff --git a/src/main/java/com/demcha/compose/document/dsl/ImageBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/ImageBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/ImageBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/ImageBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/LayerStackBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/LayerStackBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/LayerStackBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/LayerStackBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/LineBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/LineBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/LineBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/LineBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/ListBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/ListBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/ListBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/ListBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/ModuleBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/ModuleBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/ModuleBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/ModuleBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/PageBreakBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/PageBreakBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/PageBreakBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/PageBreakBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/PageFlowBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/PageFlowBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/PageFlowBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/PageFlowBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/ParagraphBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/ParagraphBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/ParagraphBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/ParagraphBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/PathBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/PathBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/PathBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/PathBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/RichText.java b/core/src/main/java/com/demcha/compose/document/dsl/RichText.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/RichText.java rename to core/src/main/java/com/demcha/compose/document/dsl/RichText.java diff --git a/src/main/java/com/demcha/compose/document/dsl/RowBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/RowBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/RowBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/RowBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/SectionBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/SectionBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/SectionBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/SectionBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/ShapeBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/ShapeBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/ShapeBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/ShapeBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/ShapeContainerBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/ShapeContainerBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/ShapeContainerBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/ShapeContainerBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/SpacerBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/SpacerBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/SpacerBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/SpacerBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/SparklineGeometry.java b/core/src/main/java/com/demcha/compose/document/dsl/SparklineGeometry.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/SparklineGeometry.java rename to core/src/main/java/com/demcha/compose/document/dsl/SparklineGeometry.java diff --git a/src/main/java/com/demcha/compose/document/dsl/TableBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/TableBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/TableBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/TableBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/TimelineBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/TimelineBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/TimelineBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/TimelineBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/TimelineEntryBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/TimelineEntryBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/TimelineEntryBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/TimelineEntryBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/TimelineMarker.java b/core/src/main/java/com/demcha/compose/document/dsl/TimelineMarker.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/TimelineMarker.java rename to core/src/main/java/com/demcha/compose/document/dsl/TimelineMarker.java diff --git a/src/main/java/com/demcha/compose/document/dsl/TocBuilder.java b/core/src/main/java/com/demcha/compose/document/dsl/TocBuilder.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/TocBuilder.java rename to core/src/main/java/com/demcha/compose/document/dsl/TocBuilder.java diff --git a/src/main/java/com/demcha/compose/document/dsl/Transformable.java b/core/src/main/java/com/demcha/compose/document/dsl/Transformable.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/Transformable.java rename to core/src/main/java/com/demcha/compose/document/dsl/Transformable.java diff --git a/src/main/java/com/demcha/compose/document/dsl/internal/BuilderSupport.java b/core/src/main/java/com/demcha/compose/document/dsl/internal/BuilderSupport.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/internal/BuilderSupport.java rename to core/src/main/java/com/demcha/compose/document/dsl/internal/BuilderSupport.java diff --git a/src/main/java/com/demcha/compose/document/dsl/internal/SemanticNameNormalizer.java b/core/src/main/java/com/demcha/compose/document/dsl/internal/SemanticNameNormalizer.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/internal/SemanticNameNormalizer.java rename to core/src/main/java/com/demcha/compose/document/dsl/internal/SemanticNameNormalizer.java diff --git a/src/main/java/com/demcha/compose/document/dsl/internal/package-info.java b/core/src/main/java/com/demcha/compose/document/dsl/internal/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/internal/package-info.java rename to core/src/main/java/com/demcha/compose/document/dsl/internal/package-info.java diff --git a/src/main/java/com/demcha/compose/document/dsl/package-info.java b/core/src/main/java/com/demcha/compose/document/dsl/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/dsl/package-info.java rename to core/src/main/java/com/demcha/compose/document/dsl/package-info.java diff --git a/src/main/java/com/demcha/compose/document/emoji/EmojiLibrary.java b/core/src/main/java/com/demcha/compose/document/emoji/EmojiLibrary.java similarity index 100% rename from src/main/java/com/demcha/compose/document/emoji/EmojiLibrary.java rename to core/src/main/java/com/demcha/compose/document/emoji/EmojiLibrary.java diff --git a/src/main/java/com/demcha/compose/document/emoji/package-info.java b/core/src/main/java/com/demcha/compose/document/emoji/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/emoji/package-info.java rename to core/src/main/java/com/demcha/compose/document/emoji/package-info.java diff --git a/src/main/java/com/demcha/compose/document/exceptions/AtomicNodeTooLargeException.java b/core/src/main/java/com/demcha/compose/document/exceptions/AtomicNodeTooLargeException.java similarity index 100% rename from src/main/java/com/demcha/compose/document/exceptions/AtomicNodeTooLargeException.java rename to core/src/main/java/com/demcha/compose/document/exceptions/AtomicNodeTooLargeException.java diff --git a/src/main/java/com/demcha/compose/document/exceptions/DocumentRenderingException.java b/core/src/main/java/com/demcha/compose/document/exceptions/DocumentRenderingException.java similarity index 100% rename from src/main/java/com/demcha/compose/document/exceptions/DocumentRenderingException.java rename to core/src/main/java/com/demcha/compose/document/exceptions/DocumentRenderingException.java diff --git a/src/main/java/com/demcha/compose/document/exceptions/MissingBackendException.java b/core/src/main/java/com/demcha/compose/document/exceptions/MissingBackendException.java similarity index 100% rename from src/main/java/com/demcha/compose/document/exceptions/MissingBackendException.java rename to core/src/main/java/com/demcha/compose/document/exceptions/MissingBackendException.java diff --git a/src/main/java/com/demcha/compose/document/exceptions/UnsupportedNodeCapabilityException.java b/core/src/main/java/com/demcha/compose/document/exceptions/UnsupportedNodeCapabilityException.java similarity index 100% rename from src/main/java/com/demcha/compose/document/exceptions/UnsupportedNodeCapabilityException.java rename to core/src/main/java/com/demcha/compose/document/exceptions/UnsupportedNodeCapabilityException.java diff --git a/src/main/java/com/demcha/compose/document/exceptions/package-info.java b/core/src/main/java/com/demcha/compose/document/exceptions/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/exceptions/package-info.java rename to core/src/main/java/com/demcha/compose/document/exceptions/package-info.java diff --git a/src/main/java/com/demcha/compose/document/image/DocumentImageData.java b/core/src/main/java/com/demcha/compose/document/image/DocumentImageData.java similarity index 100% rename from src/main/java/com/demcha/compose/document/image/DocumentImageData.java rename to core/src/main/java/com/demcha/compose/document/image/DocumentImageData.java diff --git a/src/main/java/com/demcha/compose/document/image/DocumentImageFitMode.java b/core/src/main/java/com/demcha/compose/document/image/DocumentImageFitMode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/image/DocumentImageFitMode.java rename to core/src/main/java/com/demcha/compose/document/image/DocumentImageFitMode.java diff --git a/src/main/java/com/demcha/compose/document/image/package-info.java b/core/src/main/java/com/demcha/compose/document/image/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/image/package-info.java rename to core/src/main/java/com/demcha/compose/document/image/package-info.java diff --git a/src/main/java/com/demcha/compose/document/layout/BoxConstraints.java b/core/src/main/java/com/demcha/compose/document/layout/BoxConstraints.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/BoxConstraints.java rename to core/src/main/java/com/demcha/compose/document/layout/BoxConstraints.java diff --git a/src/main/java/com/demcha/compose/document/layout/BuiltInNodeDefinitions.java b/core/src/main/java/com/demcha/compose/document/layout/BuiltInNodeDefinitions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/BuiltInNodeDefinitions.java rename to core/src/main/java/com/demcha/compose/document/layout/BuiltInNodeDefinitions.java diff --git a/src/main/java/com/demcha/compose/document/layout/ChartTextMetricsSupport.java b/core/src/main/java/com/demcha/compose/document/layout/ChartTextMetricsSupport.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/ChartTextMetricsSupport.java rename to core/src/main/java/com/demcha/compose/document/layout/ChartTextMetricsSupport.java diff --git a/src/main/java/com/demcha/compose/document/layout/CompileContext.java b/core/src/main/java/com/demcha/compose/document/layout/CompileContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/CompileContext.java rename to core/src/main/java/com/demcha/compose/document/layout/CompileContext.java diff --git a/src/main/java/com/demcha/compose/document/layout/CompilerState.java b/core/src/main/java/com/demcha/compose/document/layout/CompilerState.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/CompilerState.java rename to core/src/main/java/com/demcha/compose/document/layout/CompilerState.java diff --git a/src/main/java/com/demcha/compose/document/layout/CompositeDecoration.java b/core/src/main/java/com/demcha/compose/document/layout/CompositeDecoration.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/CompositeDecoration.java rename to core/src/main/java/com/demcha/compose/document/layout/CompositeDecoration.java diff --git a/src/main/java/com/demcha/compose/document/layout/CompositeLayoutSpec.java b/core/src/main/java/com/demcha/compose/document/layout/CompositeLayoutSpec.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/CompositeLayoutSpec.java rename to core/src/main/java/com/demcha/compose/document/layout/CompositeLayoutSpec.java diff --git a/src/main/java/com/demcha/compose/document/layout/DocumentGraph.java b/core/src/main/java/com/demcha/compose/document/layout/DocumentGraph.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/DocumentGraph.java rename to core/src/main/java/com/demcha/compose/document/layout/DocumentGraph.java diff --git a/src/main/java/com/demcha/compose/document/layout/DocumentLayoutPassContext.java b/core/src/main/java/com/demcha/compose/document/layout/DocumentLayoutPassContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/DocumentLayoutPassContext.java rename to core/src/main/java/com/demcha/compose/document/layout/DocumentLayoutPassContext.java diff --git a/src/main/java/com/demcha/compose/document/layout/DocumentLayoutResolver.java b/core/src/main/java/com/demcha/compose/document/layout/DocumentLayoutResolver.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/DocumentLayoutResolver.java rename to core/src/main/java/com/demcha/compose/document/layout/DocumentLayoutResolver.java diff --git a/src/main/java/com/demcha/compose/document/layout/DocumentNodeAdapters.java b/core/src/main/java/com/demcha/compose/document/layout/DocumentNodeAdapters.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/DocumentNodeAdapters.java rename to core/src/main/java/com/demcha/compose/document/layout/DocumentNodeAdapters.java diff --git a/src/main/java/com/demcha/compose/document/layout/FixedSlotPlacementContext.java b/core/src/main/java/com/demcha/compose/document/layout/FixedSlotPlacementContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/FixedSlotPlacementContext.java rename to core/src/main/java/com/demcha/compose/document/layout/FixedSlotPlacementContext.java diff --git a/src/main/java/com/demcha/compose/document/layout/FragmentContext.java b/core/src/main/java/com/demcha/compose/document/layout/FragmentContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/FragmentContext.java rename to core/src/main/java/com/demcha/compose/document/layout/FragmentContext.java diff --git a/src/main/java/com/demcha/compose/document/layout/FragmentPlacement.java b/core/src/main/java/com/demcha/compose/document/layout/FragmentPlacement.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/FragmentPlacement.java rename to core/src/main/java/com/demcha/compose/document/layout/FragmentPlacement.java diff --git a/src/main/java/com/demcha/compose/document/layout/InlineLayoutToken.java b/core/src/main/java/com/demcha/compose/document/layout/InlineLayoutToken.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/InlineLayoutToken.java rename to core/src/main/java/com/demcha/compose/document/layout/InlineLayoutToken.java diff --git a/src/main/java/com/demcha/compose/document/layout/LayerStackGeometry.java b/core/src/main/java/com/demcha/compose/document/layout/LayerStackGeometry.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/LayerStackGeometry.java rename to core/src/main/java/com/demcha/compose/document/layout/LayerStackGeometry.java diff --git a/src/main/java/com/demcha/compose/document/layout/LayoutCanvas.java b/core/src/main/java/com/demcha/compose/document/layout/LayoutCanvas.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/LayoutCanvas.java rename to core/src/main/java/com/demcha/compose/document/layout/LayoutCanvas.java diff --git a/src/main/java/com/demcha/compose/document/layout/LayoutCompiler.java b/core/src/main/java/com/demcha/compose/document/layout/LayoutCompiler.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/LayoutCompiler.java rename to core/src/main/java/com/demcha/compose/document/layout/LayoutCompiler.java diff --git a/src/main/java/com/demcha/compose/document/layout/LayoutFragment.java b/core/src/main/java/com/demcha/compose/document/layout/LayoutFragment.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/LayoutFragment.java rename to core/src/main/java/com/demcha/compose/document/layout/LayoutFragment.java diff --git a/src/main/java/com/demcha/compose/document/layout/LayoutGraph.java b/core/src/main/java/com/demcha/compose/document/layout/LayoutGraph.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/LayoutGraph.java rename to core/src/main/java/com/demcha/compose/document/layout/LayoutGraph.java diff --git a/src/main/java/com/demcha/compose/document/layout/LayoutInsets.java b/core/src/main/java/com/demcha/compose/document/layout/LayoutInsets.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/LayoutInsets.java rename to core/src/main/java/com/demcha/compose/document/layout/LayoutInsets.java diff --git a/src/main/java/com/demcha/compose/document/layout/MeasureContext.java b/core/src/main/java/com/demcha/compose/document/layout/MeasureContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/MeasureContext.java rename to core/src/main/java/com/demcha/compose/document/layout/MeasureContext.java diff --git a/src/main/java/com/demcha/compose/document/layout/MeasureResult.java b/core/src/main/java/com/demcha/compose/document/layout/MeasureResult.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/MeasureResult.java rename to core/src/main/java/com/demcha/compose/document/layout/MeasureResult.java diff --git a/src/main/java/com/demcha/compose/document/layout/MutatingPlacementContext.java b/core/src/main/java/com/demcha/compose/document/layout/MutatingPlacementContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/MutatingPlacementContext.java rename to core/src/main/java/com/demcha/compose/document/layout/MutatingPlacementContext.java diff --git a/src/main/java/com/demcha/compose/document/layout/NodeDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/NodeDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/NodeDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/NodeDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/NodeDefinitionSupport.java b/core/src/main/java/com/demcha/compose/document/layout/NodeDefinitionSupport.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/NodeDefinitionSupport.java rename to core/src/main/java/com/demcha/compose/document/layout/NodeDefinitionSupport.java diff --git a/src/main/java/com/demcha/compose/document/layout/NodeRegistry.java b/core/src/main/java/com/demcha/compose/document/layout/NodeRegistry.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/NodeRegistry.java rename to core/src/main/java/com/demcha/compose/document/layout/NodeRegistry.java diff --git a/src/main/java/com/demcha/compose/document/layout/PageGeometry.java b/core/src/main/java/com/demcha/compose/document/layout/PageGeometry.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PageGeometry.java rename to core/src/main/java/com/demcha/compose/document/layout/PageGeometry.java diff --git a/src/main/java/com/demcha/compose/document/layout/PageMarginOverride.java b/core/src/main/java/com/demcha/compose/document/layout/PageMarginOverride.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PageMarginOverride.java rename to core/src/main/java/com/demcha/compose/document/layout/PageMarginOverride.java diff --git a/src/main/java/com/demcha/compose/document/layout/PaginationPolicy.java b/core/src/main/java/com/demcha/compose/document/layout/PaginationPolicy.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PaginationPolicy.java rename to core/src/main/java/com/demcha/compose/document/layout/PaginationPolicy.java diff --git a/src/main/java/com/demcha/compose/document/layout/ParagraphWrapping.java b/core/src/main/java/com/demcha/compose/document/layout/ParagraphWrapping.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/ParagraphWrapping.java rename to core/src/main/java/com/demcha/compose/document/layout/ParagraphWrapping.java diff --git a/src/main/java/com/demcha/compose/document/layout/PlacedFragment.java b/core/src/main/java/com/demcha/compose/document/layout/PlacedFragment.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PlacedFragment.java rename to core/src/main/java/com/demcha/compose/document/layout/PlacedFragment.java diff --git a/src/main/java/com/demcha/compose/document/layout/PlacedNode.java b/core/src/main/java/com/demcha/compose/document/layout/PlacedNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PlacedNode.java rename to core/src/main/java/com/demcha/compose/document/layout/PlacedNode.java diff --git a/src/main/java/com/demcha/compose/document/layout/PlacementContext.java b/core/src/main/java/com/demcha/compose/document/layout/PlacementContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PlacementContext.java rename to core/src/main/java/com/demcha/compose/document/layout/PlacementContext.java diff --git a/src/main/java/com/demcha/compose/document/layout/PrepareContext.java b/core/src/main/java/com/demcha/compose/document/layout/PrepareContext.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PrepareContext.java rename to core/src/main/java/com/demcha/compose/document/layout/PrepareContext.java diff --git a/src/main/java/com/demcha/compose/document/layout/PreparedNode.java b/core/src/main/java/com/demcha/compose/document/layout/PreparedNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PreparedNode.java rename to core/src/main/java/com/demcha/compose/document/layout/PreparedNode.java diff --git a/src/main/java/com/demcha/compose/document/layout/PreparedNodeLayout.java b/core/src/main/java/com/demcha/compose/document/layout/PreparedNodeLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PreparedNodeLayout.java rename to core/src/main/java/com/demcha/compose/document/layout/PreparedNodeLayout.java diff --git a/src/main/java/com/demcha/compose/document/layout/PreparedSplitResult.java b/core/src/main/java/com/demcha/compose/document/layout/PreparedSplitResult.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/PreparedSplitResult.java rename to core/src/main/java/com/demcha/compose/document/layout/PreparedSplitResult.java diff --git a/src/main/java/com/demcha/compose/document/layout/RowSlots.java b/core/src/main/java/com/demcha/compose/document/layout/RowSlots.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/RowSlots.java rename to core/src/main/java/com/demcha/compose/document/layout/RowSlots.java diff --git a/src/main/java/com/demcha/compose/document/layout/SplitRequest.java b/core/src/main/java/com/demcha/compose/document/layout/SplitRequest.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/SplitRequest.java rename to core/src/main/java/com/demcha/compose/document/layout/SplitRequest.java diff --git a/src/main/java/com/demcha/compose/document/layout/SplitResult.java b/core/src/main/java/com/demcha/compose/document/layout/SplitResult.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/SplitResult.java rename to core/src/main/java/com/demcha/compose/document/layout/SplitResult.java diff --git a/src/main/java/com/demcha/compose/document/layout/SplittableLeafCompiler.java b/core/src/main/java/com/demcha/compose/document/layout/SplittableLeafCompiler.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/SplittableLeafCompiler.java rename to core/src/main/java/com/demcha/compose/document/layout/SplittableLeafCompiler.java diff --git a/src/main/java/com/demcha/compose/document/layout/StackedLayerCompiler.java b/core/src/main/java/com/demcha/compose/document/layout/StackedLayerCompiler.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/StackedLayerCompiler.java rename to core/src/main/java/com/demcha/compose/document/layout/StackedLayerCompiler.java diff --git a/src/main/java/com/demcha/compose/document/layout/TableLayoutSupport.java b/core/src/main/java/com/demcha/compose/document/layout/TableLayoutSupport.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/TableLayoutSupport.java rename to core/src/main/java/com/demcha/compose/document/layout/TableLayoutSupport.java diff --git a/src/main/java/com/demcha/compose/document/layout/TextFlowSupport.java b/core/src/main/java/com/demcha/compose/document/layout/TextFlowSupport.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/TextFlowSupport.java rename to core/src/main/java/com/demcha/compose/document/layout/TextFlowSupport.java diff --git a/src/main/java/com/demcha/compose/document/layout/TokenBreaking.java b/core/src/main/java/com/demcha/compose/document/layout/TokenBreaking.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/TokenBreaking.java rename to core/src/main/java/com/demcha/compose/document/layout/TokenBreaking.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/AlignDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/AlignDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/AlignDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/AlignDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/BarcodeDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/BarcodeDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/BarcodeDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/BarcodeDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/CanvasLayerDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/CanvasLayerDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/CanvasLayerDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/CanvasLayerDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/ChartDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/ChartDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/ChartDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/ChartDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/ContainerDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/ContainerDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/ContainerDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/ContainerDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/EllipseDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/EllipseDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/EllipseDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/EllipseDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/ImageDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/ImageDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/ImageDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/ImageDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/LayerStackDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/LayerStackDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/LayerStackDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/LayerStackDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/LineDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/LineDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/LineDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/LineDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/ListDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/ListDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/ListDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/ListDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/PageBreakDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/PageBreakDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/PageBreakDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/PageBreakDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/PageReferenceDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/PageReferenceDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/PageReferenceDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/PageReferenceDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/ParagraphDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/ParagraphDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/ParagraphDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/ParagraphDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/PathDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/PathDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/PathDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/PathDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/PolygonDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/PolygonDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/PolygonDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/PolygonDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/RowDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/RowDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/RowDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/RowDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/SectionDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/SectionDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/SectionDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/SectionDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/ShapeContainerDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/ShapeContainerDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/ShapeContainerDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/ShapeContainerDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/ShapeDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/ShapeDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/ShapeDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/ShapeDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/SpacerDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/SpacerDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/SpacerDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/SpacerDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/TableDefinition.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/TableDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/TableDefinition.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/TableDefinition.java diff --git a/src/main/java/com/demcha/compose/document/layout/definitions/package-info.java b/core/src/main/java/com/demcha/compose/document/layout/definitions/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/definitions/package-info.java rename to core/src/main/java/com/demcha/compose/document/layout/definitions/package-info.java diff --git a/src/main/java/com/demcha/compose/document/layout/package-info.java b/core/src/main/java/com/demcha/compose/document/layout/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/package-info.java rename to core/src/main/java/com/demcha/compose/document/layout/package-info.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/AnchorMarkerPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/AnchorMarkerPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/AnchorMarkerPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/AnchorMarkerPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/BarcodeFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/BarcodeFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/BarcodeFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/BarcodeFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/BookmarkMarkerPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/BookmarkMarkerPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/BookmarkMarkerPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/BookmarkMarkerPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/EllipseFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/EllipseFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/EllipseFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/EllipseFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ImageFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ImageFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ImageFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ImageFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/LineFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/LineFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/LineFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/LineFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ParagraphFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphImageSpan.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphImageSpan.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ParagraphImageSpan.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphImageSpan.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphLine.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphLine.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ParagraphLine.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphLine.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphShapeSpan.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphShapeSpan.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ParagraphShapeSpan.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphShapeSpan.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphSpan.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphSpan.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ParagraphSpan.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphSpan.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphSvgSpan.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphSvgSpan.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ParagraphSvgSpan.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphSvgSpan.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphTextSpan.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphTextSpan.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ParagraphTextSpan.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ParagraphTextSpan.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/PathFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/PathFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/PathFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/PathFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/PdfSemanticFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/PdfSemanticFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/PdfSemanticFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/PdfSemanticFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/PolygonFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/PolygonFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/PolygonFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/PolygonFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/PreparedListItemLayout.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/PreparedListItemLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/PreparedListItemLayout.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/PreparedListItemLayout.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/PreparedListLayout.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/PreparedListLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/PreparedListLayout.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/PreparedListLayout.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/PreparedParagraphLayout.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/PreparedParagraphLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/PreparedParagraphLayout.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/PreparedParagraphLayout.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/PreparedStackLayout.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/PreparedStackLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/PreparedStackLayout.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/PreparedStackLayout.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ResolvedShapeLayer.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ResolvedShapeLayer.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ResolvedShapeLayer.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ResolvedShapeLayer.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ResolvedSvgLayer.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ResolvedSvgLayer.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ResolvedSvgLayer.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ResolvedSvgLayer.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ShapeClipBeginPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ShapeClipBeginPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ShapeClipBeginPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ShapeClipBeginPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ShapeClipEndPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ShapeClipEndPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ShapeClipEndPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ShapeClipEndPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/ShapeFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/ShapeFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/ShapeFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/ShapeFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/SideBorders.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/SideBorders.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/SideBorders.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/SideBorders.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/TableRowFragmentPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/TableRowFragmentPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/TableRowFragmentPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/TableRowFragmentPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/TransformBeginPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/TransformBeginPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/TransformBeginPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/TransformBeginPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/TransformEndPayload.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/TransformEndPayload.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/TransformEndPayload.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/TransformEndPayload.java diff --git a/src/main/java/com/demcha/compose/document/layout/payloads/package-info.java b/core/src/main/java/com/demcha/compose/document/layout/payloads/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/layout/payloads/package-info.java rename to core/src/main/java/com/demcha/compose/document/layout/payloads/package-info.java diff --git a/src/main/java/com/demcha/compose/document/node/AlignNode.java b/core/src/main/java/com/demcha/compose/document/node/AlignNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/AlignNode.java rename to core/src/main/java/com/demcha/compose/document/node/AlignNode.java diff --git a/src/main/java/com/demcha/compose/document/node/BarcodeNode.java b/core/src/main/java/com/demcha/compose/document/node/BarcodeNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/BarcodeNode.java rename to core/src/main/java/com/demcha/compose/document/node/BarcodeNode.java diff --git a/src/main/java/com/demcha/compose/document/node/CanvasChild.java b/core/src/main/java/com/demcha/compose/document/node/CanvasChild.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/CanvasChild.java rename to core/src/main/java/com/demcha/compose/document/node/CanvasChild.java diff --git a/src/main/java/com/demcha/compose/document/node/CanvasLayerNode.java b/core/src/main/java/com/demcha/compose/document/node/CanvasLayerNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/CanvasLayerNode.java rename to core/src/main/java/com/demcha/compose/document/node/CanvasLayerNode.java diff --git a/src/main/java/com/demcha/compose/document/node/ChartNode.java b/core/src/main/java/com/demcha/compose/document/node/ChartNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ChartNode.java rename to core/src/main/java/com/demcha/compose/document/node/ChartNode.java diff --git a/src/main/java/com/demcha/compose/document/node/ContainerNode.java b/core/src/main/java/com/demcha/compose/document/node/ContainerNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ContainerNode.java rename to core/src/main/java/com/demcha/compose/document/node/ContainerNode.java diff --git a/src/main/java/com/demcha/compose/document/node/DocumentBarcodeOptions.java b/core/src/main/java/com/demcha/compose/document/node/DocumentBarcodeOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/DocumentBarcodeOptions.java rename to core/src/main/java/com/demcha/compose/document/node/DocumentBarcodeOptions.java diff --git a/src/main/java/com/demcha/compose/document/node/DocumentBarcodeType.java b/core/src/main/java/com/demcha/compose/document/node/DocumentBarcodeType.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/DocumentBarcodeType.java rename to core/src/main/java/com/demcha/compose/document/node/DocumentBarcodeType.java diff --git a/src/main/java/com/demcha/compose/document/node/DocumentBookmarkOptions.java b/core/src/main/java/com/demcha/compose/document/node/DocumentBookmarkOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/DocumentBookmarkOptions.java rename to core/src/main/java/com/demcha/compose/document/node/DocumentBookmarkOptions.java diff --git a/src/main/java/com/demcha/compose/document/node/DocumentLinkOptions.java b/core/src/main/java/com/demcha/compose/document/node/DocumentLinkOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/DocumentLinkOptions.java rename to core/src/main/java/com/demcha/compose/document/node/DocumentLinkOptions.java diff --git a/src/main/java/com/demcha/compose/document/node/DocumentLinkTarget.java b/core/src/main/java/com/demcha/compose/document/node/DocumentLinkTarget.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/DocumentLinkTarget.java rename to core/src/main/java/com/demcha/compose/document/node/DocumentLinkTarget.java diff --git a/src/main/java/com/demcha/compose/document/node/DocumentNode.java b/core/src/main/java/com/demcha/compose/document/node/DocumentNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/DocumentNode.java rename to core/src/main/java/com/demcha/compose/document/node/DocumentNode.java diff --git a/src/main/java/com/demcha/compose/document/node/EllipseNode.java b/core/src/main/java/com/demcha/compose/document/node/EllipseNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/EllipseNode.java rename to core/src/main/java/com/demcha/compose/document/node/EllipseNode.java diff --git a/src/main/java/com/demcha/compose/document/node/ExternalLinkTarget.java b/core/src/main/java/com/demcha/compose/document/node/ExternalLinkTarget.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ExternalLinkTarget.java rename to core/src/main/java/com/demcha/compose/document/node/ExternalLinkTarget.java diff --git a/src/main/java/com/demcha/compose/document/node/HorizontalAlign.java b/core/src/main/java/com/demcha/compose/document/node/HorizontalAlign.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/HorizontalAlign.java rename to core/src/main/java/com/demcha/compose/document/node/HorizontalAlign.java diff --git a/src/main/java/com/demcha/compose/document/node/ImageNode.java b/core/src/main/java/com/demcha/compose/document/node/ImageNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ImageNode.java rename to core/src/main/java/com/demcha/compose/document/node/ImageNode.java diff --git a/src/main/java/com/demcha/compose/document/node/InlineHighlightRun.java b/core/src/main/java/com/demcha/compose/document/node/InlineHighlightRun.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/InlineHighlightRun.java rename to core/src/main/java/com/demcha/compose/document/node/InlineHighlightRun.java diff --git a/src/main/java/com/demcha/compose/document/node/InlineImageAlignment.java b/core/src/main/java/com/demcha/compose/document/node/InlineImageAlignment.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/InlineImageAlignment.java rename to core/src/main/java/com/demcha/compose/document/node/InlineImageAlignment.java diff --git a/src/main/java/com/demcha/compose/document/node/InlineImageRun.java b/core/src/main/java/com/demcha/compose/document/node/InlineImageRun.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/InlineImageRun.java rename to core/src/main/java/com/demcha/compose/document/node/InlineImageRun.java diff --git a/src/main/java/com/demcha/compose/document/node/InlineRun.java b/core/src/main/java/com/demcha/compose/document/node/InlineRun.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/InlineRun.java rename to core/src/main/java/com/demcha/compose/document/node/InlineRun.java diff --git a/src/main/java/com/demcha/compose/document/node/InlineShapeRun.java b/core/src/main/java/com/demcha/compose/document/node/InlineShapeRun.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/InlineShapeRun.java rename to core/src/main/java/com/demcha/compose/document/node/InlineShapeRun.java diff --git a/src/main/java/com/demcha/compose/document/node/InlineSvgRun.java b/core/src/main/java/com/demcha/compose/document/node/InlineSvgRun.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/InlineSvgRun.java rename to core/src/main/java/com/demcha/compose/document/node/InlineSvgRun.java diff --git a/src/main/java/com/demcha/compose/document/node/InlineTextRun.java b/core/src/main/java/com/demcha/compose/document/node/InlineTextRun.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/InlineTextRun.java rename to core/src/main/java/com/demcha/compose/document/node/InlineTextRun.java diff --git a/src/main/java/com/demcha/compose/document/node/InternalLinkTarget.java b/core/src/main/java/com/demcha/compose/document/node/InternalLinkTarget.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/InternalLinkTarget.java rename to core/src/main/java/com/demcha/compose/document/node/InternalLinkTarget.java diff --git a/src/main/java/com/demcha/compose/document/node/LayerAlign.java b/core/src/main/java/com/demcha/compose/document/node/LayerAlign.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/LayerAlign.java rename to core/src/main/java/com/demcha/compose/document/node/LayerAlign.java diff --git a/src/main/java/com/demcha/compose/document/node/LayerStackNode.java b/core/src/main/java/com/demcha/compose/document/node/LayerStackNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/LayerStackNode.java rename to core/src/main/java/com/demcha/compose/document/node/LayerStackNode.java diff --git a/src/main/java/com/demcha/compose/document/node/LineNode.java b/core/src/main/java/com/demcha/compose/document/node/LineNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/LineNode.java rename to core/src/main/java/com/demcha/compose/document/node/LineNode.java diff --git a/src/main/java/com/demcha/compose/document/node/ListItem.java b/core/src/main/java/com/demcha/compose/document/node/ListItem.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ListItem.java rename to core/src/main/java/com/demcha/compose/document/node/ListItem.java diff --git a/src/main/java/com/demcha/compose/document/node/ListMarker.java b/core/src/main/java/com/demcha/compose/document/node/ListMarker.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ListMarker.java rename to core/src/main/java/com/demcha/compose/document/node/ListMarker.java diff --git a/src/main/java/com/demcha/compose/document/node/ListNode.java b/core/src/main/java/com/demcha/compose/document/node/ListNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ListNode.java rename to core/src/main/java/com/demcha/compose/document/node/ListNode.java diff --git a/src/main/java/com/demcha/compose/document/node/PageBreakNode.java b/core/src/main/java/com/demcha/compose/document/node/PageBreakNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/PageBreakNode.java rename to core/src/main/java/com/demcha/compose/document/node/PageBreakNode.java diff --git a/src/main/java/com/demcha/compose/document/node/PageReferenceNode.java b/core/src/main/java/com/demcha/compose/document/node/PageReferenceNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/PageReferenceNode.java rename to core/src/main/java/com/demcha/compose/document/node/PageReferenceNode.java diff --git a/src/main/java/com/demcha/compose/document/node/ParagraphNode.java b/core/src/main/java/com/demcha/compose/document/node/ParagraphNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ParagraphNode.java rename to core/src/main/java/com/demcha/compose/document/node/ParagraphNode.java diff --git a/src/main/java/com/demcha/compose/document/node/PathNode.java b/core/src/main/java/com/demcha/compose/document/node/PathNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/PathNode.java rename to core/src/main/java/com/demcha/compose/document/node/PathNode.java diff --git a/src/main/java/com/demcha/compose/document/node/PolygonNode.java b/core/src/main/java/com/demcha/compose/document/node/PolygonNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/PolygonNode.java rename to core/src/main/java/com/demcha/compose/document/node/PolygonNode.java diff --git a/src/main/java/com/demcha/compose/document/node/RowArrangement.java b/core/src/main/java/com/demcha/compose/document/node/RowArrangement.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/RowArrangement.java rename to core/src/main/java/com/demcha/compose/document/node/RowArrangement.java diff --git a/src/main/java/com/demcha/compose/document/node/RowNode.java b/core/src/main/java/com/demcha/compose/document/node/RowNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/RowNode.java rename to core/src/main/java/com/demcha/compose/document/node/RowNode.java diff --git a/src/main/java/com/demcha/compose/document/node/RowVerticalAlign.java b/core/src/main/java/com/demcha/compose/document/node/RowVerticalAlign.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/RowVerticalAlign.java rename to core/src/main/java/com/demcha/compose/document/node/RowVerticalAlign.java diff --git a/src/main/java/com/demcha/compose/document/node/SectionNode.java b/core/src/main/java/com/demcha/compose/document/node/SectionNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/SectionNode.java rename to core/src/main/java/com/demcha/compose/document/node/SectionNode.java diff --git a/src/main/java/com/demcha/compose/document/node/ShapeContainerNode.java b/core/src/main/java/com/demcha/compose/document/node/ShapeContainerNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ShapeContainerNode.java rename to core/src/main/java/com/demcha/compose/document/node/ShapeContainerNode.java diff --git a/src/main/java/com/demcha/compose/document/node/ShapeLayer.java b/core/src/main/java/com/demcha/compose/document/node/ShapeLayer.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ShapeLayer.java rename to core/src/main/java/com/demcha/compose/document/node/ShapeLayer.java diff --git a/src/main/java/com/demcha/compose/document/node/ShapeNode.java b/core/src/main/java/com/demcha/compose/document/node/ShapeNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/ShapeNode.java rename to core/src/main/java/com/demcha/compose/document/node/ShapeNode.java diff --git a/src/main/java/com/demcha/compose/document/node/SpacerNode.java b/core/src/main/java/com/demcha/compose/document/node/SpacerNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/SpacerNode.java rename to core/src/main/java/com/demcha/compose/document/node/SpacerNode.java diff --git a/src/main/java/com/demcha/compose/document/node/TableNode.java b/core/src/main/java/com/demcha/compose/document/node/TableNode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/TableNode.java rename to core/src/main/java/com/demcha/compose/document/node/TableNode.java diff --git a/src/main/java/com/demcha/compose/document/node/TextAlign.java b/core/src/main/java/com/demcha/compose/document/node/TextAlign.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/TextAlign.java rename to core/src/main/java/com/demcha/compose/document/node/TextAlign.java diff --git a/src/main/java/com/demcha/compose/document/node/TextVerticalAlign.java b/core/src/main/java/com/demcha/compose/document/node/TextVerticalAlign.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/TextVerticalAlign.java rename to core/src/main/java/com/demcha/compose/document/node/TextVerticalAlign.java diff --git a/src/main/java/com/demcha/compose/document/node/package-info.java b/core/src/main/java/com/demcha/compose/document/node/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/node/package-info.java rename to core/src/main/java/com/demcha/compose/document/node/package-info.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentDebugOptions.java b/core/src/main/java/com/demcha/compose/document/output/DocumentDebugOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentDebugOptions.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentDebugOptions.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentHeaderFooter.java b/core/src/main/java/com/demcha/compose/document/output/DocumentHeaderFooter.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentHeaderFooter.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentHeaderFooter.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentHeaderFooterZone.java b/core/src/main/java/com/demcha/compose/document/output/DocumentHeaderFooterZone.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentHeaderFooterZone.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentHeaderFooterZone.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentMetadata.java b/core/src/main/java/com/demcha/compose/document/output/DocumentMetadata.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentMetadata.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentMetadata.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentOutputOptions.java b/core/src/main/java/com/demcha/compose/document/output/DocumentOutputOptions.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentOutputOptions.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentOutputOptions.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentPageNumberStyle.java b/core/src/main/java/com/demcha/compose/document/output/DocumentPageNumberStyle.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentPageNumberStyle.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentPageNumberStyle.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentPageNumbering.java b/core/src/main/java/com/demcha/compose/document/output/DocumentPageNumbering.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentPageNumbering.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentPageNumbering.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentProtection.java b/core/src/main/java/com/demcha/compose/document/output/DocumentProtection.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentProtection.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentProtection.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentViewerPreferences.java b/core/src/main/java/com/demcha/compose/document/output/DocumentViewerPreferences.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentViewerPreferences.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentViewerPreferences.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentWatermark.java b/core/src/main/java/com/demcha/compose/document/output/DocumentWatermark.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentWatermark.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentWatermark.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentWatermarkLayer.java b/core/src/main/java/com/demcha/compose/document/output/DocumentWatermarkLayer.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentWatermarkLayer.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentWatermarkLayer.java diff --git a/src/main/java/com/demcha/compose/document/output/DocumentWatermarkPosition.java b/core/src/main/java/com/demcha/compose/document/output/DocumentWatermarkPosition.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/DocumentWatermarkPosition.java rename to core/src/main/java/com/demcha/compose/document/output/DocumentWatermarkPosition.java diff --git a/src/main/java/com/demcha/compose/document/output/package-info.java b/core/src/main/java/com/demcha/compose/document/output/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/output/package-info.java rename to core/src/main/java/com/demcha/compose/document/output/package-info.java diff --git a/src/main/java/com/demcha/compose/document/package-info.java b/core/src/main/java/com/demcha/compose/document/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/package-info.java rename to core/src/main/java/com/demcha/compose/document/package-info.java diff --git a/src/main/java/com/demcha/compose/document/showcase/FontShowcase.java b/core/src/main/java/com/demcha/compose/document/showcase/FontShowcase.java similarity index 100% rename from src/main/java/com/demcha/compose/document/showcase/FontShowcase.java rename to core/src/main/java/com/demcha/compose/document/showcase/FontShowcase.java diff --git a/src/main/java/com/demcha/compose/document/showcase/package-info.java b/core/src/main/java/com/demcha/compose/document/showcase/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/showcase/package-info.java rename to core/src/main/java/com/demcha/compose/document/showcase/package-info.java diff --git a/src/main/java/com/demcha/compose/document/snapshot/LayoutCanvasSnapshot.java b/core/src/main/java/com/demcha/compose/document/snapshot/LayoutCanvasSnapshot.java similarity index 100% rename from src/main/java/com/demcha/compose/document/snapshot/LayoutCanvasSnapshot.java rename to core/src/main/java/com/demcha/compose/document/snapshot/LayoutCanvasSnapshot.java diff --git a/src/main/java/com/demcha/compose/document/snapshot/LayoutInsetsSnapshot.java b/core/src/main/java/com/demcha/compose/document/snapshot/LayoutInsetsSnapshot.java similarity index 100% rename from src/main/java/com/demcha/compose/document/snapshot/LayoutInsetsSnapshot.java rename to core/src/main/java/com/demcha/compose/document/snapshot/LayoutInsetsSnapshot.java diff --git a/src/main/java/com/demcha/compose/document/snapshot/LayoutNodeSnapshot.java b/core/src/main/java/com/demcha/compose/document/snapshot/LayoutNodeSnapshot.java similarity index 100% rename from src/main/java/com/demcha/compose/document/snapshot/LayoutNodeSnapshot.java rename to core/src/main/java/com/demcha/compose/document/snapshot/LayoutNodeSnapshot.java diff --git a/src/main/java/com/demcha/compose/document/snapshot/LayoutSnapshot.java b/core/src/main/java/com/demcha/compose/document/snapshot/LayoutSnapshot.java similarity index 100% rename from src/main/java/com/demcha/compose/document/snapshot/LayoutSnapshot.java rename to core/src/main/java/com/demcha/compose/document/snapshot/LayoutSnapshot.java diff --git a/src/main/java/com/demcha/compose/document/snapshot/PageIndex.java b/core/src/main/java/com/demcha/compose/document/snapshot/PageIndex.java similarity index 100% rename from src/main/java/com/demcha/compose/document/snapshot/PageIndex.java rename to core/src/main/java/com/demcha/compose/document/snapshot/PageIndex.java diff --git a/src/main/java/com/demcha/compose/document/snapshot/PageReference.java b/core/src/main/java/com/demcha/compose/document/snapshot/PageReference.java similarity index 100% rename from src/main/java/com/demcha/compose/document/snapshot/PageReference.java rename to core/src/main/java/com/demcha/compose/document/snapshot/PageReference.java diff --git a/src/main/java/com/demcha/compose/document/snapshot/package-info.java b/core/src/main/java/com/demcha/compose/document/snapshot/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/snapshot/package-info.java rename to core/src/main/java/com/demcha/compose/document/snapshot/package-info.java diff --git a/src/main/java/com/demcha/compose/document/style/ClipPolicy.java b/core/src/main/java/com/demcha/compose/document/style/ClipPolicy.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/ClipPolicy.java rename to core/src/main/java/com/demcha/compose/document/style/ClipPolicy.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentBleed.java b/core/src/main/java/com/demcha/compose/document/style/DocumentBleed.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentBleed.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentBleed.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentBorders.java b/core/src/main/java/com/demcha/compose/document/style/DocumentBorders.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentBorders.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentBorders.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentColor.java b/core/src/main/java/com/demcha/compose/document/style/DocumentColor.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentColor.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentColor.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentCornerRadius.java b/core/src/main/java/com/demcha/compose/document/style/DocumentCornerRadius.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentCornerRadius.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentCornerRadius.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentDashPattern.java b/core/src/main/java/com/demcha/compose/document/style/DocumentDashPattern.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentDashPattern.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentDashPattern.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentEdge.java b/core/src/main/java/com/demcha/compose/document/style/DocumentEdge.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentEdge.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentEdge.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentInsets.java b/core/src/main/java/com/demcha/compose/document/style/DocumentInsets.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentInsets.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentInsets.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentLeader.java b/core/src/main/java/com/demcha/compose/document/style/DocumentLeader.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentLeader.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentLeader.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentLineCap.java b/core/src/main/java/com/demcha/compose/document/style/DocumentLineCap.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentLineCap.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentLineCap.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentLineJoin.java b/core/src/main/java/com/demcha/compose/document/style/DocumentLineJoin.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentLineJoin.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentLineJoin.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentPageLayout.java b/core/src/main/java/com/demcha/compose/document/style/DocumentPageLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentPageLayout.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentPageLayout.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentPageMode.java b/core/src/main/java/com/demcha/compose/document/style/DocumentPageMode.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentPageMode.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentPageMode.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentPaint.java b/core/src/main/java/com/demcha/compose/document/style/DocumentPaint.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentPaint.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentPaint.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentPathSegment.java b/core/src/main/java/com/demcha/compose/document/style/DocumentPathSegment.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentPathSegment.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentPathSegment.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentRowColumn.java b/core/src/main/java/com/demcha/compose/document/style/DocumentRowColumn.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentRowColumn.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentRowColumn.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentSpacing.java b/core/src/main/java/com/demcha/compose/document/style/DocumentSpacing.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentSpacing.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentSpacing.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentStroke.java b/core/src/main/java/com/demcha/compose/document/style/DocumentStroke.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentStroke.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentStroke.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentTextAutoSize.java b/core/src/main/java/com/demcha/compose/document/style/DocumentTextAutoSize.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentTextAutoSize.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentTextAutoSize.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentTextDecoration.java b/core/src/main/java/com/demcha/compose/document/style/DocumentTextDecoration.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentTextDecoration.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentTextDecoration.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentTextIndent.java b/core/src/main/java/com/demcha/compose/document/style/DocumentTextIndent.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentTextIndent.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentTextIndent.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentTextStyle.java b/core/src/main/java/com/demcha/compose/document/style/DocumentTextStyle.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentTextStyle.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentTextStyle.java diff --git a/src/main/java/com/demcha/compose/document/style/DocumentTransform.java b/core/src/main/java/com/demcha/compose/document/style/DocumentTransform.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/DocumentTransform.java rename to core/src/main/java/com/demcha/compose/document/style/DocumentTransform.java diff --git a/src/main/java/com/demcha/compose/document/style/InlineBackground.java b/core/src/main/java/com/demcha/compose/document/style/InlineBackground.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/InlineBackground.java rename to core/src/main/java/com/demcha/compose/document/style/InlineBackground.java diff --git a/src/main/java/com/demcha/compose/document/style/ShapeOutline.java b/core/src/main/java/com/demcha/compose/document/style/ShapeOutline.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/ShapeOutline.java rename to core/src/main/java/com/demcha/compose/document/style/ShapeOutline.java diff --git a/src/main/java/com/demcha/compose/document/style/ShapePoint.java b/core/src/main/java/com/demcha/compose/document/style/ShapePoint.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/ShapePoint.java rename to core/src/main/java/com/demcha/compose/document/style/ShapePoint.java diff --git a/src/main/java/com/demcha/compose/document/style/ShapeRings.java b/core/src/main/java/com/demcha/compose/document/style/ShapeRings.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/ShapeRings.java rename to core/src/main/java/com/demcha/compose/document/style/ShapeRings.java diff --git a/src/main/java/com/demcha/compose/document/style/package-info.java b/core/src/main/java/com/demcha/compose/document/style/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/style/package-info.java rename to core/src/main/java/com/demcha/compose/document/style/package-info.java diff --git a/src/main/java/com/demcha/compose/document/svg/SvgColors.java b/core/src/main/java/com/demcha/compose/document/svg/SvgColors.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/SvgColors.java rename to core/src/main/java/com/demcha/compose/document/svg/SvgColors.java diff --git a/src/main/java/com/demcha/compose/document/svg/SvgGradients.java b/core/src/main/java/com/demcha/compose/document/svg/SvgGradients.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/SvgGradients.java rename to core/src/main/java/com/demcha/compose/document/svg/SvgGradients.java diff --git a/src/main/java/com/demcha/compose/document/svg/SvgIcon.java b/core/src/main/java/com/demcha/compose/document/svg/SvgIcon.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/SvgIcon.java rename to core/src/main/java/com/demcha/compose/document/svg/SvgIcon.java diff --git a/src/main/java/com/demcha/compose/document/svg/SvgIconReader.java b/core/src/main/java/com/demcha/compose/document/svg/SvgIconReader.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/SvgIconReader.java rename to core/src/main/java/com/demcha/compose/document/svg/SvgIconReader.java diff --git a/src/main/java/com/demcha/compose/document/svg/SvgPath.java b/core/src/main/java/com/demcha/compose/document/svg/SvgPath.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/SvgPath.java rename to core/src/main/java/com/demcha/compose/document/svg/SvgPath.java diff --git a/src/main/java/com/demcha/compose/document/svg/SvgPathParser.java b/core/src/main/java/com/demcha/compose/document/svg/SvgPathParser.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/SvgPathParser.java rename to core/src/main/java/com/demcha/compose/document/svg/SvgPathParser.java diff --git a/src/main/java/com/demcha/compose/document/svg/SvgShapeLowering.java b/core/src/main/java/com/demcha/compose/document/svg/SvgShapeLowering.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/SvgShapeLowering.java rename to core/src/main/java/com/demcha/compose/document/svg/SvgShapeLowering.java diff --git a/src/main/java/com/demcha/compose/document/svg/SvgStyles.java b/core/src/main/java/com/demcha/compose/document/svg/SvgStyles.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/SvgStyles.java rename to core/src/main/java/com/demcha/compose/document/svg/SvgStyles.java diff --git a/src/main/java/com/demcha/compose/document/svg/package-info.java b/core/src/main/java/com/demcha/compose/document/svg/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/svg/package-info.java rename to core/src/main/java/com/demcha/compose/document/svg/package-info.java diff --git a/src/main/java/com/demcha/compose/document/table/DocumentTableCell.java b/core/src/main/java/com/demcha/compose/document/table/DocumentTableCell.java similarity index 100% rename from src/main/java/com/demcha/compose/document/table/DocumentTableCell.java rename to core/src/main/java/com/demcha/compose/document/table/DocumentTableCell.java diff --git a/src/main/java/com/demcha/compose/document/table/DocumentTableColumn.java b/core/src/main/java/com/demcha/compose/document/table/DocumentTableColumn.java similarity index 100% rename from src/main/java/com/demcha/compose/document/table/DocumentTableColumn.java rename to core/src/main/java/com/demcha/compose/document/table/DocumentTableColumn.java diff --git a/src/main/java/com/demcha/compose/document/table/DocumentTableStyle.java b/core/src/main/java/com/demcha/compose/document/table/DocumentTableStyle.java similarity index 100% rename from src/main/java/com/demcha/compose/document/table/DocumentTableStyle.java rename to core/src/main/java/com/demcha/compose/document/table/DocumentTableStyle.java diff --git a/src/main/java/com/demcha/compose/document/table/DocumentTableTextAnchor.java b/core/src/main/java/com/demcha/compose/document/table/DocumentTableTextAnchor.java similarity index 100% rename from src/main/java/com/demcha/compose/document/table/DocumentTableTextAnchor.java rename to core/src/main/java/com/demcha/compose/document/table/DocumentTableTextAnchor.java diff --git a/src/main/java/com/demcha/compose/document/table/package-info.java b/core/src/main/java/com/demcha/compose/document/table/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/document/table/package-info.java rename to core/src/main/java/com/demcha/compose/document/table/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/BoundedLruCache.java b/core/src/main/java/com/demcha/compose/engine/components/content/BoundedLruCache.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/BoundedLruCache.java rename to core/src/main/java/com/demcha/compose/engine/components/content/BoundedLruCache.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/ImageData.java b/core/src/main/java/com/demcha/compose/engine/components/content/ImageData.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/ImageData.java rename to core/src/main/java/com/demcha/compose/engine/components/content/ImageData.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/ImageIntrinsicSize.java b/core/src/main/java/com/demcha/compose/engine/components/content/ImageIntrinsicSize.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/ImageIntrinsicSize.java rename to core/src/main/java/com/demcha/compose/engine/components/content/ImageIntrinsicSize.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/ImageMetadata.java b/core/src/main/java/com/demcha/compose/engine/components/content/ImageMetadata.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/ImageMetadata.java rename to core/src/main/java/com/demcha/compose/engine/components/content/ImageMetadata.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/ImageSourceCache.java b/core/src/main/java/com/demcha/compose/engine/components/content/ImageSourceCache.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/ImageSourceCache.java rename to core/src/main/java/com/demcha/compose/engine/components/content/ImageSourceCache.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeData.java b/core/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeData.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeData.java rename to core/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeData.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeType.java b/core/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeType.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeType.java rename to core/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeType.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/barcode/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/barcode/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/barcode/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/barcode/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/bookmark/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/bookmark/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/bookmark/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/bookmark/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfig.java b/core/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfig.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfig.java rename to core/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfig.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterZone.java b/core/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterZone.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterZone.java rename to core/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterZone.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/header_footer/PageNumberStyle.java b/core/src/main/java/com/demcha/compose/engine/components/content/header_footer/PageNumberStyle.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/header_footer/PageNumberStyle.java rename to core/src/main/java/com/demcha/compose/engine/components/content/header_footer/PageNumberStyle.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/header_footer/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/header_footer/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/header_footer/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/header_footer/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/metadata/DocumentMetadata.java b/core/src/main/java/com/demcha/compose/engine/components/content/metadata/DocumentMetadata.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/metadata/DocumentMetadata.java rename to core/src/main/java/com/demcha/compose/engine/components/content/metadata/DocumentMetadata.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/metadata/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/metadata/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/metadata/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/metadata/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/protection/PdfProtectionConfig.java b/core/src/main/java/com/demcha/compose/engine/components/content/protection/PdfProtectionConfig.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/protection/PdfProtectionConfig.java rename to core/src/main/java/com/demcha/compose/engine/components/content/protection/PdfProtectionConfig.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/protection/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/protection/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/protection/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/protection/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/shape/Side.java b/core/src/main/java/com/demcha/compose/engine/components/content/shape/Side.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/shape/Side.java rename to core/src/main/java/com/demcha/compose/engine/components/content/shape/Side.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/shape/Stroke.java b/core/src/main/java/com/demcha/compose/engine/components/content/shape/Stroke.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/shape/Stroke.java rename to core/src/main/java/com/demcha/compose/engine/components/content/shape/Stroke.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/shape/StrokeColor.java b/core/src/main/java/com/demcha/compose/engine/components/content/shape/StrokeColor.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/shape/StrokeColor.java rename to core/src/main/java/com/demcha/compose/engine/components/content/shape/StrokeColor.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/shape/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/shape/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/shape/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/shape/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/table/TableCellContent.java b/core/src/main/java/com/demcha/compose/engine/components/content/table/TableCellContent.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/table/TableCellContent.java rename to core/src/main/java/com/demcha/compose/engine/components/content/table/TableCellContent.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/table/TableCellLayoutStyle.java b/core/src/main/java/com/demcha/compose/engine/components/content/table/TableCellLayoutStyle.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/table/TableCellLayoutStyle.java rename to core/src/main/java/com/demcha/compose/engine/components/content/table/TableCellLayoutStyle.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/table/TableColumnLayout.java b/core/src/main/java/com/demcha/compose/engine/components/content/table/TableColumnLayout.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/table/TableColumnLayout.java rename to core/src/main/java/com/demcha/compose/engine/components/content/table/TableColumnLayout.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/table/TableResolvedCell.java b/core/src/main/java/com/demcha/compose/engine/components/content/table/TableResolvedCell.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/table/TableResolvedCell.java rename to core/src/main/java/com/demcha/compose/engine/components/content/table/TableResolvedCell.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/table/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/table/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/table/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/table/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/BlockTextData.java b/core/src/main/java/com/demcha/compose/engine/components/content/text/BlockTextData.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/text/BlockTextData.java rename to core/src/main/java/com/demcha/compose/engine/components/content/text/BlockTextData.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/LineTextData.java b/core/src/main/java/com/demcha/compose/engine/components/content/text/LineTextData.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/text/LineTextData.java rename to core/src/main/java/com/demcha/compose/engine/components/content/text/LineTextData.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/Text.java b/core/src/main/java/com/demcha/compose/engine/components/content/text/Text.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/text/Text.java rename to core/src/main/java/com/demcha/compose/engine/components/content/text/Text.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/TextDataBody.java b/core/src/main/java/com/demcha/compose/engine/components/content/text/TextDataBody.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/text/TextDataBody.java rename to core/src/main/java/com/demcha/compose/engine/components/content/text/TextDataBody.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/TextDecoration.java b/core/src/main/java/com/demcha/compose/engine/components/content/text/TextDecoration.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/text/TextDecoration.java rename to core/src/main/java/com/demcha/compose/engine/components/content/text/TextDecoration.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/TextIndentStrategy.java b/core/src/main/java/com/demcha/compose/engine/components/content/text/TextIndentStrategy.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/text/TextIndentStrategy.java rename to core/src/main/java/com/demcha/compose/engine/components/content/text/TextIndentStrategy.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/TextStyle.java b/core/src/main/java/com/demcha/compose/engine/components/content/text/TextStyle.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/text/TextStyle.java rename to core/src/main/java/com/demcha/compose/engine/components/content/text/TextStyle.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/text/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/text/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/text/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkConfig.java b/core/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkConfig.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkConfig.java rename to core/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkConfig.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkLayer.java b/core/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkLayer.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkLayer.java rename to core/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkLayer.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkPosition.java b/core/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkPosition.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkPosition.java rename to core/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkPosition.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/watermark/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/content/watermark/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/content/watermark/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/content/watermark/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java b/core/src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java rename to core/src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java diff --git a/src/main/java/com/demcha/compose/engine/components/geometry/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/geometry/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/geometry/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/geometry/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/layout/Anchor.java b/core/src/main/java/com/demcha/compose/engine/components/layout/Anchor.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/layout/Anchor.java rename to core/src/main/java/com/demcha/compose/engine/components/layout/Anchor.java diff --git a/src/main/java/com/demcha/compose/engine/components/layout/HAnchor.java b/core/src/main/java/com/demcha/compose/engine/components/layout/HAnchor.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/layout/HAnchor.java rename to core/src/main/java/com/demcha/compose/engine/components/layout/HAnchor.java diff --git a/src/main/java/com/demcha/compose/engine/components/layout/VAnchor.java b/core/src/main/java/com/demcha/compose/engine/components/layout/VAnchor.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/layout/VAnchor.java rename to core/src/main/java/com/demcha/compose/engine/components/layout/VAnchor.java diff --git a/src/main/java/com/demcha/compose/engine/components/layout/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/layout/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/layout/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/layout/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/components/style/ComponentColor.java b/core/src/main/java/com/demcha/compose/engine/components/style/ComponentColor.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/style/ComponentColor.java rename to core/src/main/java/com/demcha/compose/engine/components/style/ComponentColor.java diff --git a/src/main/java/com/demcha/compose/engine/components/style/Margin.java b/core/src/main/java/com/demcha/compose/engine/components/style/Margin.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/style/Margin.java rename to core/src/main/java/com/demcha/compose/engine/components/style/Margin.java diff --git a/src/main/java/com/demcha/compose/engine/components/style/Padding.java b/core/src/main/java/com/demcha/compose/engine/components/style/Padding.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/style/Padding.java rename to core/src/main/java/com/demcha/compose/engine/components/style/Padding.java diff --git a/src/main/java/com/demcha/compose/engine/components/style/package-info.java b/core/src/main/java/com/demcha/compose/engine/components/style/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/components/style/package-info.java rename to core/src/main/java/com/demcha/compose/engine/components/style/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/debug/LayoutCanvasSnapshot.java b/core/src/main/java/com/demcha/compose/engine/debug/LayoutCanvasSnapshot.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/debug/LayoutCanvasSnapshot.java rename to core/src/main/java/com/demcha/compose/engine/debug/LayoutCanvasSnapshot.java diff --git a/src/main/java/com/demcha/compose/engine/debug/LayoutInsetsSnapshot.java b/core/src/main/java/com/demcha/compose/engine/debug/LayoutInsetsSnapshot.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/debug/LayoutInsetsSnapshot.java rename to core/src/main/java/com/demcha/compose/engine/debug/LayoutInsetsSnapshot.java diff --git a/src/main/java/com/demcha/compose/engine/debug/LayoutNodeSnapshot.java b/core/src/main/java/com/demcha/compose/engine/debug/LayoutNodeSnapshot.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/debug/LayoutNodeSnapshot.java rename to core/src/main/java/com/demcha/compose/engine/debug/LayoutNodeSnapshot.java diff --git a/src/main/java/com/demcha/compose/engine/debug/LayoutSnapshot.java b/core/src/main/java/com/demcha/compose/engine/debug/LayoutSnapshot.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/debug/LayoutSnapshot.java rename to core/src/main/java/com/demcha/compose/engine/debug/LayoutSnapshot.java diff --git a/src/main/java/com/demcha/compose/engine/debug/package-info.java b/core/src/main/java/com/demcha/compose/engine/debug/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/debug/package-info.java rename to core/src/main/java/com/demcha/compose/engine/debug/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/font/Font.java b/core/src/main/java/com/demcha/compose/engine/font/Font.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/font/Font.java rename to core/src/main/java/com/demcha/compose/engine/font/Font.java diff --git a/src/main/java/com/demcha/compose/engine/font/FontBase.java b/core/src/main/java/com/demcha/compose/engine/font/FontBase.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/font/FontBase.java rename to core/src/main/java/com/demcha/compose/engine/font/FontBase.java diff --git a/src/main/java/com/demcha/compose/engine/font/FontLineMetrics.java b/core/src/main/java/com/demcha/compose/engine/font/FontLineMetrics.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/font/FontLineMetrics.java rename to core/src/main/java/com/demcha/compose/engine/font/FontLineMetrics.java diff --git a/src/main/java/com/demcha/compose/engine/font/package-info.java b/core/src/main/java/com/demcha/compose/engine/font/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/font/package-info.java rename to core/src/main/java/com/demcha/compose/engine/font/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/io/package-info.java b/core/src/main/java/com/demcha/compose/engine/io/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/io/package-info.java rename to core/src/main/java/com/demcha/compose/engine/io/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/measurement/FontLibraryTextMeasurementSystem.java b/core/src/main/java/com/demcha/compose/engine/measurement/FontLibraryTextMeasurementSystem.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/measurement/FontLibraryTextMeasurementSystem.java rename to core/src/main/java/com/demcha/compose/engine/measurement/FontLibraryTextMeasurementSystem.java diff --git a/src/main/java/com/demcha/compose/engine/measurement/TextMeasurementSystem.java b/core/src/main/java/com/demcha/compose/engine/measurement/TextMeasurementSystem.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/measurement/TextMeasurementSystem.java rename to core/src/main/java/com/demcha/compose/engine/measurement/TextMeasurementSystem.java diff --git a/src/main/java/com/demcha/compose/engine/measurement/package-info.java b/core/src/main/java/com/demcha/compose/engine/measurement/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/measurement/package-info.java rename to core/src/main/java/com/demcha/compose/engine/measurement/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/render/package-info.java b/core/src/main/java/com/demcha/compose/engine/render/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/render/package-info.java rename to core/src/main/java/com/demcha/compose/engine/render/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/render/word/WordFont.java b/core/src/main/java/com/demcha/compose/engine/render/word/WordFont.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/render/word/WordFont.java rename to core/src/main/java/com/demcha/compose/engine/render/word/WordFont.java diff --git a/src/main/java/com/demcha/compose/engine/render/word/package-info.java b/core/src/main/java/com/demcha/compose/engine/render/word/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/render/word/package-info.java rename to core/src/main/java/com/demcha/compose/engine/render/word/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/text/TextControlSanitizer.java b/core/src/main/java/com/demcha/compose/engine/text/TextControlSanitizer.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/text/TextControlSanitizer.java rename to core/src/main/java/com/demcha/compose/engine/text/TextControlSanitizer.java diff --git a/src/main/java/com/demcha/compose/engine/text/markdown/MarkDownParser.java b/core/src/main/java/com/demcha/compose/engine/text/markdown/MarkDownParser.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/text/markdown/MarkDownParser.java rename to core/src/main/java/com/demcha/compose/engine/text/markdown/MarkDownParser.java diff --git a/src/main/java/com/demcha/compose/engine/text/markdown/package-info.java b/core/src/main/java/com/demcha/compose/engine/text/markdown/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/text/markdown/package-info.java rename to core/src/main/java/com/demcha/compose/engine/text/markdown/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/text/package-info.java b/core/src/main/java/com/demcha/compose/engine/text/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/text/package-info.java rename to core/src/main/java/com/demcha/compose/engine/text/package-info.java diff --git a/src/main/java/com/demcha/compose/engine/utils/package-info.java b/core/src/main/java/com/demcha/compose/engine/utils/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/engine/utils/package-info.java rename to core/src/main/java/com/demcha/compose/engine/utils/package-info.java diff --git a/src/main/java/com/demcha/compose/font/DefaultFonts.java b/core/src/main/java/com/demcha/compose/font/DefaultFonts.java similarity index 100% rename from src/main/java/com/demcha/compose/font/DefaultFonts.java rename to core/src/main/java/com/demcha/compose/font/DefaultFonts.java diff --git a/src/main/java/com/demcha/compose/font/FontFamilyDefinition.java b/core/src/main/java/com/demcha/compose/font/FontFamilyDefinition.java similarity index 100% rename from src/main/java/com/demcha/compose/font/FontFamilyDefinition.java rename to core/src/main/java/com/demcha/compose/font/FontFamilyDefinition.java diff --git a/src/main/java/com/demcha/compose/font/FontLibrary.java b/core/src/main/java/com/demcha/compose/font/FontLibrary.java similarity index 100% rename from src/main/java/com/demcha/compose/font/FontLibrary.java rename to core/src/main/java/com/demcha/compose/font/FontLibrary.java diff --git a/src/main/java/com/demcha/compose/font/FontName.java b/core/src/main/java/com/demcha/compose/font/FontName.java similarity index 100% rename from src/main/java/com/demcha/compose/font/FontName.java rename to core/src/main/java/com/demcha/compose/font/FontName.java diff --git a/src/main/java/com/demcha/compose/font/FontSet.java b/core/src/main/java/com/demcha/compose/font/FontSet.java similarity index 100% rename from src/main/java/com/demcha/compose/font/FontSet.java rename to core/src/main/java/com/demcha/compose/font/FontSet.java diff --git a/src/main/java/com/demcha/compose/font/package-info.java b/core/src/main/java/com/demcha/compose/font/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/font/package-info.java rename to core/src/main/java/com/demcha/compose/font/package-info.java diff --git a/src/main/java/com/demcha/compose/package-info.java b/core/src/main/java/com/demcha/compose/package-info.java similarity index 100% rename from src/main/java/com/demcha/compose/package-info.java rename to core/src/main/java/com/demcha/compose/package-info.java diff --git a/src/test/java/com/demcha/compose/architecture/ModuleBoundaryArchTest.java b/core/src/test/java/com/demcha/compose/architecture/ModuleBoundaryArchTest.java similarity index 100% rename from src/test/java/com/demcha/compose/architecture/ModuleBoundaryArchTest.java rename to core/src/test/java/com/demcha/compose/architecture/ModuleBoundaryArchTest.java diff --git a/src/test/java/com/demcha/compose/devtool/CoalescingRefreshWorker.java b/core/src/test/java/com/demcha/compose/devtool/CoalescingRefreshWorker.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/CoalescingRefreshWorker.java rename to core/src/test/java/com/demcha/compose/devtool/CoalescingRefreshWorker.java diff --git a/src/test/java/com/demcha/compose/devtool/CoalescingRefreshWorkerTest.java b/core/src/test/java/com/demcha/compose/devtool/CoalescingRefreshWorkerTest.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/CoalescingRefreshWorkerTest.java rename to core/src/test/java/com/demcha/compose/devtool/CoalescingRefreshWorkerTest.java diff --git a/src/test/java/com/demcha/compose/devtool/DevToolPreviewFileProvider.java b/core/src/test/java/com/demcha/compose/devtool/DevToolPreviewFileProvider.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/DevToolPreviewFileProvider.java rename to core/src/test/java/com/demcha/compose/devtool/DevToolPreviewFileProvider.java diff --git a/src/test/java/com/demcha/compose/devtool/DevToolWorkspace.java b/core/src/test/java/com/demcha/compose/devtool/DevToolWorkspace.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/DevToolWorkspace.java rename to core/src/test/java/com/demcha/compose/devtool/DevToolWorkspace.java diff --git a/src/test/java/com/demcha/compose/devtool/PreviewCompiler.java b/core/src/test/java/com/demcha/compose/devtool/PreviewCompiler.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/PreviewCompiler.java rename to core/src/test/java/com/demcha/compose/devtool/PreviewCompiler.java diff --git a/src/test/java/com/demcha/compose/devtool/PreviewScaleResolver.java b/core/src/test/java/com/demcha/compose/devtool/PreviewScaleResolver.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/PreviewScaleResolver.java rename to core/src/test/java/com/demcha/compose/devtool/PreviewScaleResolver.java diff --git a/src/test/java/com/demcha/compose/devtool/PreviewScaleResolverTest.java b/core/src/test/java/com/demcha/compose/devtool/PreviewScaleResolverTest.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/PreviewScaleResolverTest.java rename to core/src/test/java/com/demcha/compose/devtool/PreviewScaleResolverTest.java diff --git a/src/test/java/com/demcha/compose/devtool/RecursivePathWatcher.java b/core/src/test/java/com/demcha/compose/devtool/RecursivePathWatcher.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/RecursivePathWatcher.java rename to core/src/test/java/com/demcha/compose/devtool/RecursivePathWatcher.java diff --git a/src/test/java/com/demcha/compose/devtool/SelectiveChildFirstClassLoader.java b/core/src/test/java/com/demcha/compose/devtool/SelectiveChildFirstClassLoader.java similarity index 100% rename from src/test/java/com/demcha/compose/devtool/SelectiveChildFirstClassLoader.java rename to core/src/test/java/com/demcha/compose/devtool/SelectiveChildFirstClassLoader.java diff --git a/src/test/java/com/demcha/compose/document/api/BetaAnnotationDocumentationTest.java b/core/src/test/java/com/demcha/compose/document/api/BetaAnnotationDocumentationTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/api/BetaAnnotationDocumentationTest.java rename to core/src/test/java/com/demcha/compose/document/api/BetaAnnotationDocumentationTest.java diff --git a/src/test/java/com/demcha/compose/document/api/InternalAnnotationDocumentationTest.java b/core/src/test/java/com/demcha/compose/document/api/InternalAnnotationDocumentationTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/api/InternalAnnotationDocumentationTest.java rename to core/src/test/java/com/demcha/compose/document/api/InternalAnnotationDocumentationTest.java diff --git a/src/test/java/com/demcha/compose/document/api/MissingBackendContractTest.java b/core/src/test/java/com/demcha/compose/document/api/MissingBackendContractTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/api/MissingBackendContractTest.java rename to core/src/test/java/com/demcha/compose/document/api/MissingBackendContractTest.java diff --git a/src/test/java/com/demcha/compose/document/chart/ChartDataTest.java b/core/src/test/java/com/demcha/compose/document/chart/ChartDataTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/chart/ChartDataTest.java rename to core/src/test/java/com/demcha/compose/document/chart/ChartDataTest.java diff --git a/src/test/java/com/demcha/compose/document/chart/ChartLayoutResolverTest.java b/core/src/test/java/com/demcha/compose/document/chart/ChartLayoutResolverTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/chart/ChartLayoutResolverTest.java rename to core/src/test/java/com/demcha/compose/document/chart/ChartLayoutResolverTest.java diff --git a/src/test/java/com/demcha/compose/document/chart/ChartStyleTest.java b/core/src/test/java/com/demcha/compose/document/chart/ChartStyleTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/chart/ChartStyleTest.java rename to core/src/test/java/com/demcha/compose/document/chart/ChartStyleTest.java diff --git a/src/test/java/com/demcha/compose/document/chart/NiceScaleTest.java b/core/src/test/java/com/demcha/compose/document/chart/NiceScaleTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/chart/NiceScaleTest.java rename to core/src/test/java/com/demcha/compose/document/chart/NiceScaleTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/DocumentLinkTargetDslTest.java b/core/src/test/java/com/demcha/compose/document/dsl/DocumentLinkTargetDslTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/DocumentLinkTargetDslTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/DocumentLinkTargetDslTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/FlowShortcutOverloadsTest.java b/core/src/test/java/com/demcha/compose/document/dsl/FlowShortcutOverloadsTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/FlowShortcutOverloadsTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/FlowShortcutOverloadsTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/HeadingBarTest.java b/core/src/test/java/com/demcha/compose/document/dsl/HeadingBarTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/HeadingBarTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/HeadingBarTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/InlineHighlightRunTest.java b/core/src/test/java/com/demcha/compose/document/dsl/InlineHighlightRunTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/InlineHighlightRunTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/InlineHighlightRunTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/LineBuilderTest.java b/core/src/test/java/com/demcha/compose/document/dsl/LineBuilderTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/LineBuilderTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/LineBuilderTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/SectionPresetTest.java b/core/src/test/java/com/demcha/compose/document/dsl/SectionPresetTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/SectionPresetTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/SectionPresetTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/SparklineGeometryTest.java b/core/src/test/java/com/demcha/compose/document/dsl/SparklineGeometryTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/SparklineGeometryTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/SparklineGeometryTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/TableBuilderZebraAndTotalsTest.java b/core/src/test/java/com/demcha/compose/document/dsl/TableBuilderZebraAndTotalsTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/TableBuilderZebraAndTotalsTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/TableBuilderZebraAndTotalsTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/TimelineBuilderTest.java b/core/src/test/java/com/demcha/compose/document/dsl/TimelineBuilderTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/TimelineBuilderTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/TimelineBuilderTest.java diff --git a/src/test/java/com/demcha/compose/document/dsl/TocBuilderTest.java b/core/src/test/java/com/demcha/compose/document/dsl/TocBuilderTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/dsl/TocBuilderTest.java rename to core/src/test/java/com/demcha/compose/document/dsl/TocBuilderTest.java diff --git a/src/test/java/com/demcha/compose/document/emoji/EmojiLibraryTest.java b/core/src/test/java/com/demcha/compose/document/emoji/EmojiLibraryTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/emoji/EmojiLibraryTest.java rename to core/src/test/java/com/demcha/compose/document/emoji/EmojiLibraryTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/BoxConstraintsTest.java b/core/src/test/java/com/demcha/compose/document/layout/BoxConstraintsTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/BoxConstraintsTest.java rename to core/src/test/java/com/demcha/compose/document/layout/BoxConstraintsTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/CompilerStateTest.java b/core/src/test/java/com/demcha/compose/document/layout/CompilerStateTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/CompilerStateTest.java rename to core/src/test/java/com/demcha/compose/document/layout/CompilerStateTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/CompositeDecorationTest.java b/core/src/test/java/com/demcha/compose/document/layout/CompositeDecorationTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/CompositeDecorationTest.java rename to core/src/test/java/com/demcha/compose/document/layout/CompositeDecorationTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/DocumentLayoutResolverTest.java b/core/src/test/java/com/demcha/compose/document/layout/DocumentLayoutResolverTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/DocumentLayoutResolverTest.java rename to core/src/test/java/com/demcha/compose/document/layout/DocumentLayoutResolverTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/LayerStackGeometryTest.java b/core/src/test/java/com/demcha/compose/document/layout/LayerStackGeometryTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/LayerStackGeometryTest.java rename to core/src/test/java/com/demcha/compose/document/layout/LayerStackGeometryTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/LayoutInsetsTest.java b/core/src/test/java/com/demcha/compose/document/layout/LayoutInsetsTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/LayoutInsetsTest.java rename to core/src/test/java/com/demcha/compose/document/layout/LayoutInsetsTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/LayoutInvariantsPropertiesTest.java b/core/src/test/java/com/demcha/compose/document/layout/LayoutInvariantsPropertiesTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/LayoutInvariantsPropertiesTest.java rename to core/src/test/java/com/demcha/compose/document/layout/LayoutInvariantsPropertiesTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/ParagraphWrappingTest.java b/core/src/test/java/com/demcha/compose/document/layout/ParagraphWrappingTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/ParagraphWrappingTest.java rename to core/src/test/java/com/demcha/compose/document/layout/ParagraphWrappingTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/RowSlotsTest.java b/core/src/test/java/com/demcha/compose/document/layout/RowSlotsTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/RowSlotsTest.java rename to core/src/test/java/com/demcha/compose/document/layout/RowSlotsTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/SplittableLeafCompilerTest.java b/core/src/test/java/com/demcha/compose/document/layout/SplittableLeafCompilerTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/SplittableLeafCompilerTest.java rename to core/src/test/java/com/demcha/compose/document/layout/SplittableLeafCompilerTest.java diff --git a/src/test/java/com/demcha/compose/document/layout/TokenBreakingTest.java b/core/src/test/java/com/demcha/compose/document/layout/TokenBreakingTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/layout/TokenBreakingTest.java rename to core/src/test/java/com/demcha/compose/document/layout/TokenBreakingTest.java diff --git a/src/test/java/com/demcha/compose/document/node/InlineShapeRunTest.java b/core/src/test/java/com/demcha/compose/document/node/InlineShapeRunTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/node/InlineShapeRunTest.java rename to core/src/test/java/com/demcha/compose/document/node/InlineShapeRunTest.java diff --git a/src/test/java/com/demcha/compose/document/node/InlineSvgRunTest.java b/core/src/test/java/com/demcha/compose/document/node/InlineSvgRunTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/node/InlineSvgRunTest.java rename to core/src/test/java/com/demcha/compose/document/node/InlineSvgRunTest.java diff --git a/src/test/java/com/demcha/compose/document/node/PathNodeTest.java b/core/src/test/java/com/demcha/compose/document/node/PathNodeTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/node/PathNodeTest.java rename to core/src/test/java/com/demcha/compose/document/node/PathNodeTest.java diff --git a/src/test/java/com/demcha/compose/document/node/PolygonNodeTest.java b/core/src/test/java/com/demcha/compose/document/node/PolygonNodeTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/node/PolygonNodeTest.java rename to core/src/test/java/com/demcha/compose/document/node/PolygonNodeTest.java diff --git a/src/test/java/com/demcha/compose/document/output/DocumentDebugOptionsTest.java b/core/src/test/java/com/demcha/compose/document/output/DocumentDebugOptionsTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/output/DocumentDebugOptionsTest.java rename to core/src/test/java/com/demcha/compose/document/output/DocumentDebugOptionsTest.java diff --git a/src/test/java/com/demcha/compose/document/output/DocumentPageNumberingTest.java b/core/src/test/java/com/demcha/compose/document/output/DocumentPageNumberingTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/output/DocumentPageNumberingTest.java rename to core/src/test/java/com/demcha/compose/document/output/DocumentPageNumberingTest.java diff --git a/src/test/java/com/demcha/compose/document/style/DocumentColorTest.java b/core/src/test/java/com/demcha/compose/document/style/DocumentColorTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/style/DocumentColorTest.java rename to core/src/test/java/com/demcha/compose/document/style/DocumentColorTest.java diff --git a/src/test/java/com/demcha/compose/document/style/DocumentDashPatternTest.java b/core/src/test/java/com/demcha/compose/document/style/DocumentDashPatternTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/style/DocumentDashPatternTest.java rename to core/src/test/java/com/demcha/compose/document/style/DocumentDashPatternTest.java diff --git a/src/test/java/com/demcha/compose/document/style/DocumentPaintTest.java b/core/src/test/java/com/demcha/compose/document/style/DocumentPaintTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/style/DocumentPaintTest.java rename to core/src/test/java/com/demcha/compose/document/style/DocumentPaintTest.java diff --git a/src/test/java/com/demcha/compose/document/style/DocumentTransformTest.java b/core/src/test/java/com/demcha/compose/document/style/DocumentTransformTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/style/DocumentTransformTest.java rename to core/src/test/java/com/demcha/compose/document/style/DocumentTransformTest.java diff --git a/src/test/java/com/demcha/compose/document/style/ShapeOutlineTest.java b/core/src/test/java/com/demcha/compose/document/style/ShapeOutlineTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/style/ShapeOutlineTest.java rename to core/src/test/java/com/demcha/compose/document/style/ShapeOutlineTest.java diff --git a/src/test/java/com/demcha/compose/document/style/ShapeRingsTest.java b/core/src/test/java/com/demcha/compose/document/style/ShapeRingsTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/style/ShapeRingsTest.java rename to core/src/test/java/com/demcha/compose/document/style/ShapeRingsTest.java diff --git a/src/test/java/com/demcha/compose/document/svg/SvgPathTest.java b/core/src/test/java/com/demcha/compose/document/svg/SvgPathTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/svg/SvgPathTest.java rename to core/src/test/java/com/demcha/compose/document/svg/SvgPathTest.java diff --git a/src/test/java/com/demcha/compose/document/svg/SvgShapeLoweringTest.java b/core/src/test/java/com/demcha/compose/document/svg/SvgShapeLoweringTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/svg/SvgShapeLoweringTest.java rename to core/src/test/java/com/demcha/compose/document/svg/SvgShapeLoweringTest.java diff --git a/src/test/java/com/demcha/compose/document/svg/SvgStylesTest.java b/core/src/test/java/com/demcha/compose/document/svg/SvgStylesTest.java similarity index 100% rename from src/test/java/com/demcha/compose/document/svg/SvgStylesTest.java rename to core/src/test/java/com/demcha/compose/document/svg/SvgStylesTest.java diff --git a/src/test/java/com/demcha/compose/engine/architecture/EngineAssemblyGuardTest.java b/core/src/test/java/com/demcha/compose/engine/architecture/EngineAssemblyGuardTest.java similarity index 100% rename from src/test/java/com/demcha/compose/engine/architecture/EngineAssemblyGuardTest.java rename to core/src/test/java/com/demcha/compose/engine/architecture/EngineAssemblyGuardTest.java diff --git a/src/test/java/com/demcha/compose/engine/architecture/EnginePdfBoundaryTest.java b/core/src/test/java/com/demcha/compose/engine/architecture/EnginePdfBoundaryTest.java similarity index 100% rename from src/test/java/com/demcha/compose/engine/architecture/EnginePdfBoundaryTest.java rename to core/src/test/java/com/demcha/compose/engine/architecture/EnginePdfBoundaryTest.java diff --git a/src/test/java/com/demcha/compose/engine/components/content/BoundedLruCacheTest.java b/core/src/test/java/com/demcha/compose/engine/components/content/BoundedLruCacheTest.java similarity index 100% rename from src/test/java/com/demcha/compose/engine/components/content/BoundedLruCacheTest.java rename to core/src/test/java/com/demcha/compose/engine/components/content/BoundedLruCacheTest.java diff --git a/src/test/java/com/demcha/compose/engine/components/content/ImageDataCacheTest.java b/core/src/test/java/com/demcha/compose/engine/components/content/ImageDataCacheTest.java similarity index 100% rename from src/test/java/com/demcha/compose/engine/components/content/ImageDataCacheTest.java rename to core/src/test/java/com/demcha/compose/engine/components/content/ImageDataCacheTest.java diff --git a/src/test/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfigNumberingTest.java b/core/src/test/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfigNumberingTest.java similarity index 100% rename from src/test/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfigNumberingTest.java rename to core/src/test/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfigNumberingTest.java diff --git a/src/test/java/com/demcha/compose/engine/components/content/header_footer/PageNumberStyleTest.java b/core/src/test/java/com/demcha/compose/engine/components/content/header_footer/PageNumberStyleTest.java similarity index 100% rename from src/test/java/com/demcha/compose/engine/components/content/header_footer/PageNumberStyleTest.java rename to core/src/test/java/com/demcha/compose/engine/components/content/header_footer/PageNumberStyleTest.java diff --git a/src/test/java/com/demcha/compose/engine/text/TextControlSanitizerTest.java b/core/src/test/java/com/demcha/compose/engine/text/TextControlSanitizerTest.java similarity index 100% rename from src/test/java/com/demcha/compose/engine/text/TextControlSanitizerTest.java rename to core/src/test/java/com/demcha/compose/engine/text/TextControlSanitizerTest.java diff --git a/src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java b/core/src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java similarity index 89% rename from src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java rename to core/src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java index 2c67feb33..cb3b05a47 100644 --- a/src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java +++ b/core/src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java @@ -14,7 +14,7 @@ import static org.assertj.core.api.Assertions.assertThat; class CanonicalSurfaceGuardTest { - private static final Path PROJECT_ROOT = Path.of("").toAbsolutePath().normalize(); + private static final Path PROJECT_ROOT = RepoRoot.get(); private static final List FORBIDDEN_TOKENS = List.of( "com.demcha.templates", "com.demcha.compose.v2", @@ -29,8 +29,8 @@ class CanonicalSurfaceGuardTest { private static final Set MAIN_CANONICAL_SOURCE_ALLOWLIST = Set.of(); private static final Set DOCUMENTATION_ALLOWLIST = Set.of( - "src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java", - "src/test/java/com/demcha/documentation/DocumentationCoverageTest.java"); + "core/src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java", + "core/src/test/java/com/demcha/documentation/DocumentationCoverageTest.java"); private static final Set CANONICAL_DOCUMENT_TEST_ALLOWLIST = Set.of(); @@ -68,7 +68,7 @@ class CanonicalSurfaceGuardTest { @Test void canonicalMainSourcesShouldAvoidLegacySurfaceOutsideTransitionMappers() throws IOException { assertNoForbiddenReferences( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document"), MAIN_CANONICAL_SOURCE_ALLOWLIST); } @@ -82,21 +82,21 @@ void runnableExamplesShouldStayOnCanonicalSurface() throws IOException { @Test void documentationTestsShouldAvoidLegacySurfaceOutsideGuardFiles() throws IOException { assertNoForbiddenReferences( - PROJECT_ROOT.resolve("src/test/java/com/demcha/documentation"), + PROJECT_ROOT.resolve("core/src/test/java/com/demcha/documentation"), DOCUMENTATION_ALLOWLIST); } @Test void canonicalDocumentTestsShouldAvoidLegacySurfaceOutsideCompatibilityParity() throws IOException { assertNoForbiddenReferences( - PROJECT_ROOT.resolve("src/test/java/com/demcha/compose/document"), + PROJECT_ROOT.resolve("core/src/test/java/com/demcha/compose/document"), CANONICAL_DOCUMENT_TEST_ALLOWLIST); } @Test void canonicalBenchmarkEntryPointsShouldAvoidLegacySurface() throws IOException { assertNoForbiddenReferences( - PROJECT_ROOT.resolve("src/test/java/com/demcha/compose"), + PROJECT_ROOT.resolve("core/src/test/java/com/demcha/compose"), path -> { String fileName = path.getFileName().toString(); return fileName.endsWith("Benchmark.java") @@ -126,18 +126,18 @@ void publicAuthoringDocsAndExamplesShouldNotImportEngineInternals() throws IOExc PROJECT_ROOT.resolve("docs/recipes.md"), PROJECT_ROOT.resolve("docs/operations/layout-snapshot-testing.md"), PROJECT_ROOT.resolve("examples/src/main/java/com/demcha/examples"), - PROJECT_ROOT.resolve("src/test/java/com/demcha/documentation/DocumentationExamplesTest.java"))); + PROJECT_ROOT.resolve("qa/src/test/java/com/demcha/documentation/DocumentationExamplesTest.java"))); } @Test void semanticAuthoringValuePackagesShouldNotImportEngineInternals() throws IOException { assertNoForbiddenAuthoringImports( List.of( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/node"), - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/dsl"), - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/style"), - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/table"), - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/image"))); + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/node"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/dsl"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/style"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/table"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/image"))); } private void assertNoForbiddenReferences(Path root, Set allowlist) throws IOException { diff --git a/src/test/java/com/demcha/documentation/DocumentationCoverageTest.java b/core/src/test/java/com/demcha/documentation/DocumentationCoverageTest.java similarity index 78% rename from src/test/java/com/demcha/documentation/DocumentationCoverageTest.java rename to core/src/test/java/com/demcha/documentation/DocumentationCoverageTest.java index 701b7f685..8fb8f5b30 100644 --- a/src/test/java/com/demcha/documentation/DocumentationCoverageTest.java +++ b/core/src/test/java/com/demcha/documentation/DocumentationCoverageTest.java @@ -13,8 +13,8 @@ import static org.assertj.core.api.Assertions.assertThat; class DocumentationCoverageTest { - private static final Path PROJECT_ROOT = Path.of("").toAbsolutePath().normalize(); - private static final Path DOCUMENT_SOURCE_ROOT = PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document"); + private static final Path PROJECT_ROOT = RepoRoot.get(); + private static final Path DOCUMENT_SOURCE_ROOT = PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document"); private static final Pattern PUBLIC_TOP_LEVEL_TYPE = Pattern.compile( "\\bpublic\\s+(?:final\\s+)?(?:class|interface|record|enum)\\b"); private static final Pattern PUBLIC_TYPE_WITH_JAVADOC = Pattern.compile( @@ -74,64 +74,64 @@ void canonicalPublicTypesShouldExposeTopLevelJavadocs() throws IOException { @Test void highLevelApiAnchorsShouldRetainMethodJavadocs() throws IOException { assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/GraphCompose.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/GraphCompose.java"), "public static DocumentBuilder document()"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/GraphCompose.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/GraphCompose.java"), "public static DocumentBuilder document(Path outputFile)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/GraphCompose.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/GraphCompose.java"), "public DocumentSession create()"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/GraphCompose.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/GraphCompose.java"), "public DocumentBuilder guideLines(boolean enabled)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public DocumentDsl dsl()"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public DocumentSession compose(Consumer spec)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public PageFlowBuilder pageFlow()"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public ContainerNode pageFlow(Consumer spec)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public DocumentSession guideLines(boolean enabled)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public LayoutGraph layoutGraph()"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/dsl/DocumentDsl.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/dsl/DocumentDsl.java"), "public ContainerNode pageFlow(Consumer spec)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/dsl/AbstractFlowBuilder.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/dsl/AbstractFlowBuilder.java"), "public T addSection(String name, Consumer spec)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/dsl/TableBuilder.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/dsl/TableBuilder.java"), "public TableBuilder header(String... values)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/dsl/TableBuilder.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/dsl/TableBuilder.java"), "public TableBuilder rows(String[]... rows)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/dsl/TableBuilder.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/dsl/TableBuilder.java"), "public TableBuilder headerStyle(DocumentTableStyle style)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public byte[] toPdfBytes()"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public void writePdf(OutputStream output)"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/api/DocumentSession.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/api/DocumentSession.java"), "public void buildPdf()"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/dsl/DocumentDsl.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/dsl/DocumentDsl.java"), "public PageFlowBuilder pageFlow()"); assertHasJavadocBefore( - PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/dsl/PageFlowBuilder.java"), + PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose/document/dsl/PageFlowBuilder.java"), "public ContainerNode build()"); } diff --git a/src/test/java/com/demcha/documentation/EnginePoiIsolationGuardTest.java b/core/src/test/java/com/demcha/documentation/EnginePoiIsolationGuardTest.java similarity index 100% rename from src/test/java/com/demcha/documentation/EnginePoiIsolationGuardTest.java rename to core/src/test/java/com/demcha/documentation/EnginePoiIsolationGuardTest.java diff --git a/src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java b/core/src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java similarity index 100% rename from src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java rename to core/src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java diff --git a/src/test/java/com/demcha/documentation/PackageMapGuardTest.java b/core/src/test/java/com/demcha/documentation/PackageMapGuardTest.java similarity index 94% rename from src/test/java/com/demcha/documentation/PackageMapGuardTest.java rename to core/src/test/java/com/demcha/documentation/PackageMapGuardTest.java index d11ebd7e0..f50b456ce 100644 --- a/src/test/java/com/demcha/documentation/PackageMapGuardTest.java +++ b/core/src/test/java/com/demcha/documentation/PackageMapGuardTest.java @@ -13,7 +13,7 @@ import static org.assertj.core.api.Assertions.assertThat; class PackageMapGuardTest { - private static final Path PROJECT_ROOT = Path.of("").toAbsolutePath().normalize(); + private static final Path PROJECT_ROOT = RepoRoot.get(); private static final List FORBIDDEN_OLD_PACKAGE_TOKENS = List.of( "com.demcha.compose." + "layout_" + "core", "com.demcha.compose.document.model." + "node", @@ -28,7 +28,7 @@ class PackageMapGuardTest { @Test void productionPackagesShouldHavePackageInfo() throws IOException { - Path sourceRoot = PROJECT_ROOT.resolve("src/main/java/com/demcha/compose"); + Path sourceRoot = PROJECT_ROOT.resolve("core/src/main/java/com/demcha/compose"); try (var paths = Files.walk(sourceRoot)) { Set missing = new TreeSet<>(paths @@ -47,8 +47,8 @@ void productionPackagesShouldHavePackageInfo() throws IOException { @Test void oldPackageNamesShouldNotReturnToSourcesDocsOrExamples() throws IOException { List roots = List.of( - PROJECT_ROOT.resolve("src/main/java"), - PROJECT_ROOT.resolve("src/test/java"), + PROJECT_ROOT.resolve("core/src/main/java"), + PROJECT_ROOT.resolve("core/src/test/java"), PROJECT_ROOT.resolve("examples/src/main/java"), PROJECT_ROOT.resolve("README.md"), PROJECT_ROOT.resolve("CONTRIBUTING.md"), diff --git a/src/test/java/com/demcha/documentation/PdfBackendIsolationGuardTest.java b/core/src/test/java/com/demcha/documentation/PdfBackendIsolationGuardTest.java similarity index 100% rename from src/test/java/com/demcha/documentation/PdfBackendIsolationGuardTest.java rename to core/src/test/java/com/demcha/documentation/PdfBackendIsolationGuardTest.java diff --git a/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java b/core/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java similarity index 100% rename from src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java rename to core/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java diff --git a/src/test/java/com/demcha/documentation/PublicApiSinceTagCoverageTest.java b/core/src/test/java/com/demcha/documentation/PublicApiSinceTagCoverageTest.java similarity index 100% rename from src/test/java/com/demcha/documentation/PublicApiSinceTagCoverageTest.java rename to core/src/test/java/com/demcha/documentation/PublicApiSinceTagCoverageTest.java diff --git a/core/src/test/java/com/demcha/documentation/RepoRoot.java b/core/src/test/java/com/demcha/documentation/RepoRoot.java new file mode 100644 index 000000000..3f4b18ff7 --- /dev/null +++ b/core/src/test/java/com/demcha/documentation/RepoRoot.java @@ -0,0 +1,31 @@ +package com.demcha.documentation; + +import java.nio.file.Files; +import java.nio.file.Path; + +/** + * Resolves the repository root for the documentation / architecture guards, which + * read repo-root and sibling-module files (README, CONTRIBUTING, docs, the other + * modules' poms). The engine module lives in {@code core/}, so its basedir is no + * longer the repository root; these guards walk up to the root instead of assuming + * the working directory is it. + * + *

The root is located by the Maven wrapper ({@code mvnw}), a marker unique to + * the repository root and stable across the module layout. Core-module-local files + * are resolved under {@code core/} from the returned root.

+ */ +final class RepoRoot { + + private RepoRoot() { + } + + /** The absolute repository-root path (the directory that holds {@code mvnw}). */ + static Path get() { + for (Path dir = Path.of("").toAbsolutePath().normalize(); dir != null; dir = dir.getParent()) { + if (Files.exists(dir.resolve("mvnw"))) { + return dir; + } + } + return Path.of("").toAbsolutePath().normalize(); + } +} diff --git a/src/test/java/com/demcha/documentation/SemanticLayerNoPdfBoxDependencyTest.java b/core/src/test/java/com/demcha/documentation/SemanticLayerNoPdfBoxDependencyTest.java similarity index 100% rename from src/test/java/com/demcha/documentation/SemanticLayerNoPdfBoxDependencyTest.java rename to core/src/test/java/com/demcha/documentation/SemanticLayerNoPdfBoxDependencyTest.java diff --git a/src/test/java/com/demcha/documentation/VersionConsistencyGuardTest.java b/core/src/test/java/com/demcha/documentation/VersionConsistencyGuardTest.java similarity index 95% rename from src/test/java/com/demcha/documentation/VersionConsistencyGuardTest.java rename to core/src/test/java/com/demcha/documentation/VersionConsistencyGuardTest.java index 388a0a07a..e031c124d 100644 --- a/src/test/java/com/demcha/documentation/VersionConsistencyGuardTest.java +++ b/core/src/test/java/com/demcha/documentation/VersionConsistencyGuardTest.java @@ -23,10 +23,11 @@ * and to the README + showcase install snippets. * *

This is the safety net behind the aggregator-reactor version model - * (see {@code aggregator/pom.xml}): the library {@code pom.xml} is the single - * version source, the aggregator bumps every module in lockstep via - * {@code versions:set}, and the child modules inherit their version rather than - * pinning a literal. This test fails the build the moment a bump leaves any + * (the root {@code pom.xml} is the reactor aggregator): the engine + * {@code core/pom.xml} is the single version source, the aggregator bumps every + * module in lockstep via {@code versions:set}, and the child modules inherit + * their version rather than pinning a literal. This test fails the build the + * moment a bump leaves any * module — or a copy-paste install snippet — pointing at a different version, * which is the drift class that previously let the benchmarks module run * against the previous release. @@ -43,14 +44,14 @@ */ class VersionConsistencyGuardTest { - private static final Path PROJECT_ROOT = Path.of("").toAbsolutePath().normalize(); + private static final Path PROJECT_ROOT = RepoRoot.get(); @Test void everyModuleResolvesToTheRootProjectVersion() throws Exception { - String root = effectiveVersion(PROJECT_ROOT.resolve("pom.xml")); + String root = effectiveVersion(PROJECT_ROOT.resolve("core/pom.xml")); - assertThat(effectiveVersion(PROJECT_ROOT.resolve("aggregator/pom.xml"))) - .describedAs("aggregator/pom.xml version must equal root pom.xml version (%s)", root) + assertThat(effectiveVersion(PROJECT_ROOT.resolve("pom.xml"))) + .describedAs("the root aggregator pom.xml must equal the engine (core/pom.xml) version (%s)", root) .isEqualTo(root); assertThat(effectiveVersion(PROJECT_ROOT.resolve("examples/pom.xml"))) .describedAs("examples must inherit the root version (%s)", root) @@ -95,7 +96,7 @@ void bundledFontsVersionAgreesAcrossModules() throws Exception { // it: the aggregator (inherited by examples + benchmarks) and the bundle. // This guards the version-literal drift class: those must always agree, even // though they differ from the engine version line. - String aggregator = pinnedVersionProperty(PROJECT_ROOT.resolve("aggregator/pom.xml"), "graphcompose.fonts.version"); + String aggregator = pinnedVersionProperty(PROJECT_ROOT.resolve("pom.xml"), "graphcompose.fonts.version"); assertThat(pinnedVersionProperty(PROJECT_ROOT.resolve("bundle/pom.xml"), "graphcompose.fonts.version")) .describedAs("bundle graphcompose.fonts.version must match the aggregator's (%s)", aggregator) @@ -108,7 +109,7 @@ void bundledEmojiVersionAgreesAcrossModules() throws Exception { // version line (emoji-v* tag) and the ${graphcompose.emoji.version} property // that pins it lives in the aggregator (inherited by examples) and the bundle // (which now ships the colour-emoji set). Guard the same version-literal drift. - String aggregator = pinnedVersionProperty(PROJECT_ROOT.resolve("aggregator/pom.xml"), "graphcompose.emoji.version"); + String aggregator = pinnedVersionProperty(PROJECT_ROOT.resolve("pom.xml"), "graphcompose.emoji.version"); assertThat(pinnedVersionProperty(PROJECT_ROOT.resolve("bundle/pom.xml"), "graphcompose.emoji.version")) .describedAs("bundle graphcompose.emoji.version must match the aggregator's (%s)", aggregator) @@ -139,9 +140,9 @@ void jacocoPluginVersionAgreesAcrossModules() throws Exception { // module that measures coverage (engine, render-pdf, templates) plus the // aggregator that the qa + coverage children inherit, so guard the four // against drift. - String core = pinnedVersionProperty(PROJECT_ROOT.resolve("pom.xml"), "jacoco.plugin.version"); + String core = pinnedVersionProperty(PROJECT_ROOT.resolve("core/pom.xml"), "jacoco.plugin.version"); - assertThat(pinnedVersionProperty(PROJECT_ROOT.resolve("aggregator/pom.xml"), "jacoco.plugin.version")) + assertThat(pinnedVersionProperty(PROJECT_ROOT.resolve("pom.xml"), "jacoco.plugin.version")) .describedAs("aggregator jacoco.plugin.version must match the engine pom's (%s)", core) .isEqualTo(core); assertThat(pinnedVersionProperty(PROJECT_ROOT.resolve("render-pdf/pom.xml"), "jacoco.plugin.version")) @@ -285,7 +286,7 @@ void showcaseSiteVersionMatchesTheProjectVersion() throws Exception { */ private Set acceptableTargets() throws Exception { Set targets = new LinkedHashSet<>(); - targets.add(effectiveVersion(PROJECT_ROOT.resolve("pom.xml"))); + targets.add(effectiveVersion(PROJECT_ROOT.resolve("core/pom.xml"))); String changelog = Files.readString(PROJECT_ROOT.resolve("CHANGELOG.md")); Matcher planned = Pattern.compile("^## v([0-9][^ \\n]*)\\s*[\\u2014\\-]\\s*Planned\\b", Pattern.MULTILINE) .matcher(changelog); diff --git a/src/test/java/com/demcha/testing/VisualTestOutputs.java b/core/src/test/java/com/demcha/testing/VisualTestOutputs.java similarity index 100% rename from src/test/java/com/demcha/testing/VisualTestOutputs.java rename to core/src/test/java/com/demcha/testing/VisualTestOutputs.java diff --git a/src/test/java/com/demcha/testing/visual/DemoStyles.java b/core/src/test/java/com/demcha/testing/visual/DemoStyles.java similarity index 100% rename from src/test/java/com/demcha/testing/visual/DemoStyles.java rename to core/src/test/java/com/demcha/testing/visual/DemoStyles.java diff --git a/src/test/resources/data/cover_letter.txt b/core/src/test/resources/data/cover_letter.txt similarity index 100% rename from src/test/resources/data/cover_letter.txt rename to core/src/test/resources/data/cover_letter.txt diff --git a/src/test/resources/data/original_cv.yml b/core/src/test/resources/data/original_cv.yml similarity index 100% rename from src/test/resources/data/original_cv.yml rename to core/src/test/resources/data/original_cv.yml diff --git a/src/test/resources/data/raw_cv_test.json b/core/src/test/resources/data/raw_cv_test.json similarity index 100% rename from src/test/resources/data/raw_cv_test.json rename to core/src/test/resources/data/raw_cv_test.json diff --git a/src/test/resources/logback-benchmark.xml b/core/src/test/resources/logback-benchmark.xml similarity index 100% rename from src/test/resources/logback-benchmark.xml rename to core/src/test/resources/logback-benchmark.xml diff --git a/src/test/resources/logback.xml b/core/src/test/resources/logback.xml similarity index 100% rename from src/test/resources/logback.xml rename to core/src/test/resources/logback.xml diff --git a/coverage/pom.xml b/coverage/pom.xml index 8a5fcb03e..8b5e9c956 100644 --- a/coverage/pom.xml +++ b/coverage/pom.xml @@ -27,7 +27,7 @@ io.github.demchaav graph-compose-build 2.0.0-SNAPSHOT - ../aggregator/pom.xml + ../pom.xml graph-compose-coverage diff --git a/docs/adr/0003-api-stability-and-internal-marker.md b/docs/adr/0003-api-stability-and-internal-marker.md index 4d2bcc032..e712a363f 100644 --- a/docs/adr/0003-api-stability-and-internal-marker.md +++ b/docs/adr/0003-api-stability-and-internal-marker.md @@ -36,7 +36,7 @@ public surface grows. ## Decision Introduce -[`com.demcha.compose.document.api.Internal`](../../src/main/java/com/demcha/compose/document/api/Internal.java) — +[`com.demcha.compose.document.api.Internal`](../../core/src/main/java/com/demcha/compose/document/api/Internal.java) — a `@Documented`, `@Retention(RUNTIME)` annotation with targets `{TYPE, METHOD, FIELD, CONSTRUCTOR, PACKAGE}`. @@ -59,7 +59,7 @@ right next to `DocumentSession`, so it is discoverable. ## Coverage -- [`document.layout.package-info.java`](../../src/main/java/com/demcha/compose/document/layout/package-info.java) +- [`document.layout.package-info.java`](../../core/src/main/java/com/demcha/compose/document/layout/package-info.java) carries `@Internal` at the package level. Every type in the package inherits the marker through `Class.getPackage()`. - 10 `public` payload records inside `BuiltInNodeDefinitions` (the @@ -67,12 +67,12 @@ right next to `DocumentSession`, so it is discoverable. carry an explicit `@Internal` annotation in addition to the package marker, so the contract survives if those records later move to `document.layout.payloads.*` (planned in Phase E.2). -- [`InternalAnnotationCoverageTest`](../../src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java) +- [`InternalAnnotationCoverageTest`](../../core/src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java) asserts the package marker is in place and propagates to a representative cross-section of layout types (`BoxConstraints`, `MeasureResult`, `NodeDefinition`, `PlacedFragment`, `LayoutGraph`). -- [`InternalAnnotationDocumentationTest`](../../src/test/java/com/demcha/compose/document/api/InternalAnnotationDocumentationTest.java) +- [`InternalAnnotationDocumentationTest`](../../core/src/test/java/com/demcha/compose/document/api/InternalAnnotationDocumentationTest.java) pins the annotation's retention, target set, `@Documented`-ness, and the source-level Javadoc contract (the phrase *"may change in any release without notice"* and the link to the diff --git a/docs/adr/0011-templates-v2-architecture.md b/docs/adr/0011-templates-v2-architecture.md index c2171d5f0..0d0e87aef 100644 --- a/docs/adr/0011-templates-v2-architecture.md +++ b/docs/adr/0011-templates-v2-architecture.md @@ -195,7 +195,7 @@ references. The reopen made an explicit trade-off: `PDFRenderer`, and asserts the per-pixel diff against a checked-in baseline PNG stays within budget 2500 mismatched pixels at per-channel tolerance 8. Baselines live under - `src/test/resources/visual-baselines/{cv-v2,coverletter-v2}/`. + `core/src/test/resources/visual-baselines/{cv-v2,coverletter-v2}/`. Re-bless after a deliberate visual change with `-Dgraphcompose.visual.approve=true`. The harness (`PdfVisualRegression`) was already built but never wired into diff --git a/docs/adr/0012-nested-list-evolution.md b/docs/adr/0012-nested-list-evolution.md index acd480404..93bf492e5 100644 --- a/docs/adr/0012-nested-list-evolution.md +++ b/docs/adr/0012-nested-list-evolution.md @@ -176,4 +176,4 @@ across mixed flat / nested entries. - Tests: [`qa/src/test/java/com/demcha/compose/document/dsl/ListBuilderNestedTest.java`](../../qa/src/test/java/com/demcha/compose/document/dsl/ListBuilderNestedTest.java). - Snapshot baseline: - `src/test/resources/layout-snapshots/document/nested_list_three_levels.json`. + `core/src/test/resources/layout-snapshots/document/nested_list_three_levels.json`. diff --git a/docs/adr/0013-composed-table-cell.md b/docs/adr/0013-composed-table-cell.md index 4258bfbb6..e9dc3ceb4 100644 --- a/docs/adr/0013-composed-table-cell.md +++ b/docs/adr/0013-composed-table-cell.md @@ -200,4 +200,4 @@ etc.). - Tests: [`qa/src/test/java/com/demcha/compose/document/table/TableCellComposedContentTest.java`](../../qa/src/test/java/com/demcha/compose/document/table/TableCellComposedContentTest.java). - Snapshot baseline: - `src/test/resources/layout-snapshots/document/table_cell_with_paragraph.json`. + `core/src/test/resources/layout-snapshots/document/table_cell_with_paragraph.json`. diff --git a/docs/adr/0014-controlled-absolute-placement.md b/docs/adr/0014-controlled-absolute-placement.md index 2ce96c1bb..40a5f15dd 100644 --- a/docs/adr/0014-controlled-absolute-placement.md +++ b/docs/adr/0014-controlled-absolute-placement.md @@ -217,6 +217,6 @@ diagram authors who want overflow can opt into - Tests: [`qa/src/test/java/com/demcha/compose/document/dsl/CanvasLayerBuilderTest.java`](../../qa/src/test/java/com/demcha/compose/document/dsl/CanvasLayerBuilderTest.java). - Snapshot baseline: - `src/test/resources/layout-snapshots/document/canvas_layer_basic.json`. + `core/src/test/resources/layout-snapshots/document/canvas_layer_basic.json`. - Showcase: [`examples/src/main/java/com/demcha/examples/features/canvas/CanvasLayerExample.java`](../../examples/src/main/java/com/demcha/examples/features/canvas/CanvasLayerExample.java). diff --git a/docs/api-stability.md b/docs/api-stability.md index 891cc17f5..65d207f41 100644 --- a/docs/api-stability.md +++ b/docs/api-stability.md @@ -30,19 +30,19 @@ matrix. |---|---|---|---| | **Stable** | _(default — no annotation)_ | The canonical authoring surface that user code is meant to call: `GraphCompose.document(...)`, `DocumentSession`, `DocumentDsl`, `RowBuilder` / `SectionBuilder` / `ParagraphBuilder` and friends, `DocumentInsets` / `DocumentColor` / `DocumentTextStyle`, the `BrandTheme` factories, and the layered template presets (`templates.cv.*`, `templates.coverletter.*`, `templates.invoice.*`, `templates.proposal.*`). | **Major releases only.** | | **Supported** | _(no annotation; called out in the page's Javadoc)_ | A canonical surface that ships through a major line but won't be in the next one — its replacement is already the Stable path. Bug fixes + behaviour-preserving refactors only. *(No package holds this tier on the 2.0 line; the classic `cv.presets.*` CV surface held it through 1.x and was removed in 2.0 per [`which-template-system.md`](templates/which-template-system.md).)* | **Minor releases for behaviour-preserving refactors; removed wholesale in the next major.** | -| **Extension SPI** | [`@Beta`](../src/main/java/com/demcha/compose/document/api/Beta.java) | Public extension points that authors are expected to **implement**, not only call: render-handler interfaces, [`NodeDefinition`](../src/main/java/com/demcha/compose/document/layout/NodeDefinition.java), custom `Theme` subtype contracts, fragment payload interfaces designed for extension. | Minor releases, with a one-minor deprecation window where possible. | -| **Experimental** | [`@Beta`](../src/main/java/com/demcha/compose/document/api/Beta.java) _(same annotation as Extension SPI; the distinction lives in the docstring on the annotated element)_ | A brand-new public type shipping in its first minor release before its contract has stabilised. The contract is in active flux. | Any minor release, including removal. No deprecation window. | -| **Internal** | [`@Internal`](../src/main/java/com/demcha/compose/document/api/Internal.java) (per-element or per-package) | Engine surface: everything in `com.demcha.compose.document.layout.*`, `com.demcha.compose.engine.*`, render-pipeline payload records, `LayoutCompiler`, `NodeDefinitionSupport`, the placement / measure / split contracts. Technically `public` for cross-package collaboration; not part of the contract. Canonical list lives in [ADR-0003](adr/0003-api-stability-and-internal-marker.md) § *Coverage*. | **Any release.** No deprecation window, no CHANGELOG entry required. | +| **Extension SPI** | [`@Beta`](../core/src/main/java/com/demcha/compose/document/api/Beta.java) | Public extension points that authors are expected to **implement**, not only call: render-handler interfaces, [`NodeDefinition`](../core/src/main/java/com/demcha/compose/document/layout/NodeDefinition.java), custom `Theme` subtype contracts, fragment payload interfaces designed for extension. | Minor releases, with a one-minor deprecation window where possible. | +| **Experimental** | [`@Beta`](../core/src/main/java/com/demcha/compose/document/api/Beta.java) _(same annotation as Extension SPI; the distinction lives in the docstring on the annotated element)_ | A brand-new public type shipping in its first minor release before its contract has stabilised. The contract is in active flux. | Any minor release, including removal. No deprecation window. | +| **Internal** | [`@Internal`](../core/src/main/java/com/demcha/compose/document/api/Internal.java) (per-element or per-package) | Engine surface: everything in `com.demcha.compose.document.layout.*`, `com.demcha.compose.engine.*`, render-pipeline payload records, `LayoutCompiler`, `NodeDefinitionSupport`, the placement / measure / split contracts. Technically `public` for cross-package collaboration; not part of the contract. Canonical list lives in [ADR-0003](adr/0003-api-stability-and-internal-marker.md) § *Coverage*. | **Any release.** No deprecation window, no CHANGELOG entry required. | | **Legacy** | _(no annotation; flagged in [`which-template-system.md`](templates/which-template-system.md) and in CHANGELOG `### Deprecations`)_ | Pre-rebuild surface kept only so callers from before a major rebuild keep compiling. Frozen — bug fixes only. *(No package holds this tier on the 2.0 line; `com.demcha.templates.*` and `com.demcha.compose.v2.*` held it through 1.x and were removed in 2.0 — the migration target is the canonical DSL.)* | **Removed in the next major**; no patch / minor changes other than security fixes. | > Both marker annotations -> ([`@Internal`](../src/main/java/com/demcha/compose/document/api/Internal.java) -> and [`@Beta`](../src/main/java/com/demcha/compose/document/api/Beta.java)) +> ([`@Internal`](../core/src/main/java/com/demcha/compose/document/api/Internal.java) +> and [`@Beta`](../core/src/main/java/com/demcha/compose/document/api/Beta.java)) > live in the public `document.api` package and are pinned by -> [`InternalAnnotationCoverageTest`](../src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java), +> [`InternalAnnotationCoverageTest`](../core/src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java), > `InternalAnnotationDocumentationTest`, and `BetaAnnotationDocumentationTest`. > The Extension SPI seam currently carrying `@Beta` is -> [`NodeDefinition`](../src/main/java/com/demcha/compose/document/layout/NodeDefinition.java); +> [`NodeDefinition`](../core/src/main/java/com/demcha/compose/document/layout/NodeDefinition.java); > additional Extension SPI surfaces (render-handler interfaces, > fragment-payload interfaces designed for extension) will gain the > marker incrementally as their contract solidifies. @@ -62,14 +62,14 @@ GraphCompose uses sealed interfaces in several places to keep visitor code exhaustive. The public ones — the ones this policy actually covers — are: -- [`ChartSize`](../src/main/java/com/demcha/compose/document/chart/ChartSize.java) (Stable) -- [`ChartSpec`](../src/main/java/com/demcha/compose/document/chart/ChartSpec.java) (Stable) +- [`ChartSize`](../core/src/main/java/com/demcha/compose/document/chart/ChartSize.java) (Stable) +- [`ChartSpec`](../core/src/main/java/com/demcha/compose/document/chart/ChartSpec.java) (Stable) - [`CvSection`](../templates/src/main/java/com/demcha/compose/document/templates/cv/data/CvSection.java) (Stable) -- [`DocumentLinkTarget`](../src/main/java/com/demcha/compose/document/node/DocumentLinkTarget.java) (Stable) -- [`DocumentPaint`](../src/main/java/com/demcha/compose/document/style/DocumentPaint.java) (Stable) -- [`DocumentPathSegment`](../src/main/java/com/demcha/compose/document/style/DocumentPathSegment.java) (Stable) -- [`InlineRun`](../src/main/java/com/demcha/compose/document/node/InlineRun.java) (Stable) -- [`ShapeOutline`](../src/main/java/com/demcha/compose/document/style/ShapeOutline.java) (Stable) +- [`DocumentLinkTarget`](../core/src/main/java/com/demcha/compose/document/node/DocumentLinkTarget.java) (Stable) +- [`DocumentPaint`](../core/src/main/java/com/demcha/compose/document/style/DocumentPaint.java) (Stable) +- [`DocumentPathSegment`](../core/src/main/java/com/demcha/compose/document/style/DocumentPathSegment.java) (Stable) +- [`InlineRun`](../core/src/main/java/com/demcha/compose/document/node/InlineRun.java) (Stable) +- [`ShapeOutline`](../core/src/main/java/com/demcha/compose/document/style/ShapeOutline.java) (Stable) Sealed types under `@Internal` packages — `ParagraphSpan` and `PlacementContext` — are outside this policy by definition; their permit @@ -246,8 +246,8 @@ Javadoc per element. — the template naming history and the migration map for pre-2.0 callers; this stability policy lives one level up and covers all packages, not just templates. -- [`InternalAnnotationCoverageTest`](../src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java) - and [`InternalAnnotationDocumentationTest`](../src/test/java/com/demcha/compose/document/api/InternalAnnotationDocumentationTest.java) +- [`InternalAnnotationCoverageTest`](../core/src/test/java/com/demcha/documentation/InternalAnnotationCoverageTest.java) + and [`InternalAnnotationDocumentationTest`](../core/src/test/java/com/demcha/compose/document/api/InternalAnnotationDocumentationTest.java) — the architecture guards that fail the build if the package-level `@Internal` marker disappears from `document.layout` or the annotation's contract drifts from this policy. diff --git a/docs/architecture/overview.md b/docs/architecture/overview.md index 24813baf7..e7f9439f5 100644 --- a/docs/architecture/overview.md +++ b/docs/architecture/overview.md @@ -308,7 +308,7 @@ GraphCompose uses a practical three-layer regression strategy: 1. layout math unit tests for isolated calculations 2. layout snapshot tests for deterministic full-document geometry checks (`LayoutSnapshotAssertions` plus baselines under - `src/test/resources/layout-snapshots/`) + `core/src/test/resources/layout-snapshots/`) 3. PDF render tests for visual smoke coverage and artifact inspection (`PdfVisualRegression`, `target/visual-tests/`) diff --git a/docs/architecture/package-map.md b/docs/architecture/package-map.md index 24c651f15..2cac1be6d 100644 --- a/docs/architecture/package-map.md +++ b/docs/architecture/package-map.md @@ -5,10 +5,10 @@ This document is the source of truth for production package ownership in the can **Stability markers.** Public packages default to the **Stable** tier of the [API stability policy](../api-stability.md). Engine packages (`com.demcha.compose.engine.*`, `com.demcha.compose.document.layout`, render-pipeline internals) carry the -[`@Internal`](../../src/main/java/com/demcha/compose/document/api/Internal.java) +[`@Internal`](../../core/src/main/java/com/demcha/compose/document/api/Internal.java) marker at the package level; individual types deliberately exposed as Extension SPI inside an `@Internal` package carry -[`@Beta`](../../src/main/java/com/demcha/compose/document/api/Beta.java) +[`@Beta`](../../core/src/main/java/com/demcha/compose/document/api/Beta.java) on the type itself (`NodeDefinition` is the current example). The "Extension rule" column below names the extension seam where one is intended. diff --git a/docs/contributing/extension-guide.md b/docs/contributing/extension-guide.md index 08e34b194..baa0d7a6a 100644 --- a/docs/contributing/extension-guide.md +++ b/docs/contributing/extension-guide.md @@ -60,8 +60,8 @@ The Phase B `ShapeContainerNode` is a clean example of all five steps: | Step | Source file | | --- | --- | -| Record | [`ShapeContainerNode.java`](../../src/main/java/com/demcha/compose/document/node/ShapeContainerNode.java) | -| NodeDefinition | `ShapeContainerDefinition` (inner class of [`BuiltInNodeDefinitions.java`](../../src/main/java/com/demcha/compose/document/layout/BuiltInNodeDefinitions.java)) | +| Record | [`ShapeContainerNode.java`](../../core/src/main/java/com/demcha/compose/document/node/ShapeContainerNode.java) | +| NodeDefinition | `ShapeContainerDefinition` (inner class of [`BuiltInNodeDefinitions.java`](../../core/src/main/java/com/demcha/compose/document/layout/BuiltInNodeDefinitions.java)) | | Payloads | `ShapeClipBeginPayload`, `ShapeClipEndPayload` (also inner classes of `BuiltInNodeDefinitions`) | | Registration | `BuiltInNodeDefinitions.registerDefaults(...)` line that calls `.register(new ShapeContainerDefinition())` | | Render handlers | [`PdfShapeClipBeginRenderHandler.java`](../../render-pdf/src/main/java/com/demcha/compose/document/backend/fixed/pdf/handlers/PdfShapeClipBeginRenderHandler.java) and `PdfShapeClipEndRenderHandler.java` | @@ -96,10 +96,10 @@ AFTER children). The repo has two architecture-guard tests that pin two invariants for new nodes: -- [`PublicApiNoEngineLeakTest`](../../src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java) +- [`PublicApiNoEngineLeakTest`](../../core/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java) — `com.demcha.compose.document.*` must not import `com.demcha.compose.engine.*` types. -- [`CanonicalSurfaceGuardTest`](../../src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java) +- [`CanonicalSurfaceGuardTest`](../../core/src/test/java/com/demcha/documentation/CanonicalSurfaceGuardTest.java) — public markdown docs and runnable examples must not reference the retired legacy surface (the v1.0–v1.3 PDF composer entry point and the old templates package). The forbidden token list lives at the @@ -127,7 +127,7 @@ Test pattern: - Unit test the builder asserts the resulting node has the expected fields (see `ShapeContainerBuilderTest`). -- Add a `*DemoTest` under `src/test/java/com/demcha/testing/visual/` +- Add a `*DemoTest` under `core/src/test/java/com/demcha/testing/visual/` that writes a PDF artefact under `target/visual-tests/...` so the reviewer can check the rendered output by eye. @@ -202,7 +202,7 @@ of a hidden behaviour drift. Set-up per node: 1. Build a small fixture document under - `src/test/resources/layout-snapshots/foo/` (or generate it from a + `core/src/test/resources/layout-snapshots/foo/` (or generate it from a helper class). 2. Write a test that opens a `DocumentSession`, composes the fixture, captures the layout graph, and runs @@ -213,7 +213,7 @@ Set-up per node: The [`LayoutSnapshotAssertions`](../../testing/src/main/java/com/demcha/compose/testing/layout/LayoutSnapshotAssertions.java) helper class wraps the diff machinery; existing snapshot tests under -`src/test/java/com/demcha/compose/document/templates/builtins/` +`core/src/test/java/com/demcha/compose/document/templates/builtins/` (e.g. `BuiltInTemplateLayoutSnapshotTest`) show the call site shape. ## Reading the source by responsibility diff --git a/docs/contributing/implementation-guide.md b/docs/contributing/implementation-guide.md index 797f50466..e8b3a80ea 100644 --- a/docs/contributing/implementation-guide.md +++ b/docs/contributing/implementation-guide.md @@ -45,8 +45,8 @@ If the object should render something visible, the entity needs a renderable mar Examples: -- [TextComponent.java](../../src/main/java/com/demcha/compose/engine/components/renderable/TextComponent.java) -- [BlockText.java](../../src/main/java/com/demcha/compose/engine/components/renderable/BlockText.java) +- [TextComponent.java](../../core/src/main/java/com/demcha/compose/engine/components/renderable/TextComponent.java) +- [BlockText.java](../../core/src/main/java/com/demcha/compose/engine/components/renderable/BlockText.java) Those renderable components are render markers. Prefer keeping them backend-neutral and let renderer-owned handlers perform format-specific drawing. @@ -100,7 +100,7 @@ If the engine needs to place the object, it usually needs a size signal. The most common component is: -- [ContentSize.java](../../src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java) +- [ContentSize.java](../../core/src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java) For simple fixed-size objects, set `ContentSize` directly in the builder. @@ -180,7 +180,7 @@ Why the table uses this contract: Relevant files: -- [TableResolvedCell.java](../../src/main/java/com/demcha/compose/engine/components/content/table/TableResolvedCell.java) +- [TableResolvedCell.java](../../core/src/main/java/com/demcha/compose/engine/components/content/table/TableResolvedCell.java) Rule of thumb: @@ -251,9 +251,9 @@ Preferred extension pattern for new backends: Important files: -- [Render.java](../../src/main/java/com/demcha/compose/engine/render/Render.java) -- [RenderPassSession.java](../../src/main/java/com/demcha/compose/engine/render/RenderPassSession.java) -- [RenderStream.java](../../src/main/java/com/demcha/compose/engine/render/RenderStream.java) +- [Render.java](../../core/src/main/java/com/demcha/compose/engine/render/Render.java) +- [RenderPassSession.java](../../core/src/main/java/com/demcha/compose/engine/render/RenderPassSession.java) +- [RenderStream.java](../../core/src/main/java/com/demcha/compose/engine/render/RenderStream.java) - [PdfFixedLayoutBackend.java](../../render-pdf/src/main/java/com/demcha/compose/document/backend/fixed/pdf/PdfFixedLayoutBackend.java) - [PdfFragmentRenderHandler.java](../../render-pdf/src/main/java/com/demcha/compose/document/backend/fixed/pdf/PdfFragmentRenderHandler.java) @@ -308,10 +308,10 @@ The layout side uses entity components, not builder classes directly. Important files: -- [LayoutTraversalContext.java](../../src/main/java/com/demcha/compose/engine/core/LayoutTraversalContext.java) -- [ComputedPosition.java](../../src/main/java/com/demcha/compose/engine/components/layout/coordinator/ComputedPosition.java) -- [EntityBounds.java](../../src/main/java/com/demcha/compose/engine/components/geometry/EntityBounds.java) -- [ParentContainerUpdater.java](../../src/main/java/com/demcha/compose/engine/pagination/ParentContainerUpdater.java) +- [LayoutTraversalContext.java](../../core/src/main/java/com/demcha/compose/engine/core/LayoutTraversalContext.java) +- [ComputedPosition.java](../../core/src/main/java/com/demcha/compose/engine/components/layout/coordinator/ComputedPosition.java) +- [EntityBounds.java](../../core/src/main/java/com/demcha/compose/engine/components/geometry/EntityBounds.java) +- [ParentContainerUpdater.java](../../core/src/main/java/com/demcha/compose/engine/pagination/ParentContainerUpdater.java) In practice: diff --git a/docs/font-coverage.md b/docs/font-coverage.md index e3af6eecb..a9f018476 100644 --- a/docs/font-coverage.md +++ b/docs/font-coverage.md @@ -75,6 +75,6 @@ instead of `●`, `-` or `–` instead of an arrow. ## See also -- [`FontName`](../src/main/java/com/demcha/compose/font/FontName.java) — the built-in catalogue. +- [`FontName`](../core/src/main/java/com/demcha/compose/font/FontName.java) — the built-in catalogue. - Inline shapes: [`InlineShapesExample`](../examples/src/main/java/com/demcha/examples/features/text/InlineShapesExample.java). - [Shapes recipe](recipes/shapes.md) · [Themes recipe](recipes/themes.md). diff --git a/docs/operations/benchmarks.md b/docs/operations/benchmarks.md index 20e183677..72e98ff2e 100644 --- a/docs/operations/benchmarks.md +++ b/docs/operations/benchmarks.md @@ -230,7 +230,7 @@ The wrappers above benchmark whatever is currently checked out. To answer "is branch B faster or slower than branch A?" fairly on a noisy laptop, use the dedicated A/B scripts. They **interleave** the two branches (A,B,A,B,…) so thermal drift averages out, **repeat** each branch and compare **medians**, and -**cool down** between runs. Each branch is rebuilt (`install -pl .`) before its +**cool down** between runs. Each branch is rebuilt (`install -pl :graph-compose-core`) before its runs so the benchmark measures that branch's engine, and untracked benchmark probes are moved aside around the branch switch so they cannot break the other branch's compile. diff --git a/docs/operations/layout-snapshot-testing.md b/docs/operations/layout-snapshot-testing.md index b69d2255d..518a04e09 100644 --- a/docs/operations/layout-snapshot-testing.md +++ b/docs/operations/layout-snapshot-testing.md @@ -152,7 +152,7 @@ First run for a brand-new snapshot: That creates the committed baseline under: -- `src/test/resources/layout-snapshots/features/my_feature_layout.json` +- `core/src/test/resources/layout-snapshots/features/my_feature_layout.json` Normal verification run after that: @@ -162,7 +162,7 @@ Normal verification run after that: If the test fails, compare: -- expected baseline in `src/test/resources/layout-snapshots/...` +- expected baseline in `core/src/test/resources/layout-snapshots/...` - generated actual file in `target/visual-tests/layout-snapshots/.../*.actual.json` Use snapshot tests when the thing you care about is layout stability. If you need visual confirmation too, keep `document.buildPdf()` in the same test or pair the snapshot test with a render test. @@ -251,7 +251,7 @@ The extractor also normalizes numeric values before serialization. The current d Committed baselines: -- `src/test/resources/layout-snapshots/...` +- `core/src/test/resources/layout-snapshots/...` Mismatch artifacts generated during normal test runs: @@ -292,7 +292,7 @@ The same property works for downstream projects that use `LayoutSnapshotAssertio In normal mode: -- expected JSON stays committed in `src/test/resources/layout-snapshots` +- expected JSON stays committed in `core/src/test/resources/layout-snapshots` - mismatches write an `.actual.json` artifact under `target/visual-tests/layout-snapshots` - the assertion failure points to both expected and actual paths diff --git a/docs/operations/test-your-document.md b/docs/operations/test-your-document.md index e35a0ff4c..2f614db95 100644 --- a/docs/operations/test-your-document.md +++ b/docs/operations/test-your-document.md @@ -99,17 +99,17 @@ Once. Run the test in **update mode** so it writes the baseline JSON: ```bash ./mvnw test -Dgraphcompose.updateSnapshots=true \ - -Dtest=MyReportLayoutSnapshotTest -pl . + -Dtest=MyReportLayoutSnapshotTest -pl :graph-compose-core ``` -The baseline JSON appears under `src/test/resources/layout-snapshots/`. +The baseline JSON appears under `core/src/test/resources/layout-snapshots/`. Commit it alongside your test class — the baseline is part of the test, not generated output. ### 4. Day-to-day: just run the suite ```bash -./mvnw test -pl . +./mvnw test -pl :graph-compose-core ``` The test now passes deterministically. Any change that drifts the @@ -123,7 +123,7 @@ that you can diff against the committed baseline. ```bash ./mvnw test -Dgraphcompose.updateSnapshots=true \ - -Dtest=MyReportLayoutSnapshotTest -pl . + -Dtest=MyReportLayoutSnapshotTest -pl :graph-compose-core ``` The baseline is overwritten with the new layout. **Commit the updated @@ -172,7 +172,7 @@ checks separately with regular unit tests — snapshot is for geometry. 1. The failure message points at the actual file: `target/visual-tests/layout-snapshots/.actual.json` 2. Compare the actual against the committed baseline under - `src/test/resources/layout-snapshots/.json`. Most diff tools + `core/src/test/resources/layout-snapshots/.json`. Most diff tools highlight a single field-level change. 3. Decide what you're looking at: - **`computedY` / `placementY` shifted by a few units** → a margin diff --git a/docs/operations/visual-regression-testing.md b/docs/operations/visual-regression-testing.md index 9417e943a..2792cfa35 100644 --- a/docs/operations/visual-regression-testing.md +++ b/docs/operations/visual-regression-testing.md @@ -61,7 +61,7 @@ class InvoiceVisualParityTest { | Setter | Default | Meaning | |---|---|---| -| `baselineRoot(Path)` | `src/test/resources/visual-baselines` | where baselines and diff sidecars live | +| `baselineRoot(Path)` | `core/src/test/resources/visual-baselines` | where baselines and diff sidecars live | | `renderScale(float)` | `1.0` | render scale multiplier (`2.0` = retina); must be `> 0` | | `perPixelTolerance(int)` | `6` | allowed per-channel delta (`0..255`) before a pixel counts as mismatched | | `mismatchedPixelBudget(long)` | `0` | mismatched pixels tolerated per page before the assertion fails | diff --git a/docs/recipes/absolute-placement.md b/docs/recipes/absolute-placement.md index 5eb7e44d8..3149811ea 100644 --- a/docs/recipes/absolute-placement.md +++ b/docs/recipes/absolute-placement.md @@ -55,5 +55,5 @@ within one page. ## See also - Runnable example: [`CanvasLayerExample`](../../examples/src/main/java/com/demcha/examples/features/canvas/CanvasLayerExample.java) — a full certificate. -- [`CanvasLayerNode`](../../src/main/java/com/demcha/compose/document/node/CanvasLayerNode.java) — the node behind `addCanvas`. +- [`CanvasLayerNode`](../../core/src/main/java/com/demcha/compose/document/node/CanvasLayerNode.java) — the node behind `addCanvas`. - [Layered page design](layered-page-design.md) — canvas vs. layer stack vs. row vs. page background. diff --git a/docs/recipes/extending.md b/docs/recipes/extending.md index 3974078ed..4ac1ecc7b 100644 --- a/docs/recipes/extending.md +++ b/docs/recipes/extending.md @@ -86,7 +86,7 @@ void myNodeLaysOutAsExpected() throws Exception { ``` On first run the assertion writes -`src/test/resources/layout-snapshots/my-feature/scenario_a.json`. To +`core/src/test/resources/layout-snapshots/my-feature/scenario_a.json`. To accept a baseline change after a deliberate refactor, re-run with `-Dgraphcompose.updateSnapshots=true`. See [`LayoutSnapshotRegressionExample`](../../examples/src/main/java/com/demcha/examples/features/snapshots/LayoutSnapshotRegressionExample.java) diff --git a/docs/recipes/page-backgrounds.md b/docs/recipes/page-backgrounds.md index f52d65539..67489a470 100644 --- a/docs/recipes/page-backgrounds.md +++ b/docs/recipes/page-backgrounds.md @@ -87,6 +87,6 @@ text. ## See also -- [`PageBackgroundFill`](../../src/main/java/com/demcha/compose/document/api/PageBackgroundFill.java) — every factory, with ratio semantics. +- [`PageBackgroundFill`](../../core/src/main/java/com/demcha/compose/document/api/PageBackgroundFill.java) — every factory, with ratio semantics. - `DocumentSession.pageBackground(...)` / `pageBackgrounds(...)`. - [Layered page design](layered-page-design.md) — choosing between page backgrounds, rows, layer stacks, and canvases. diff --git a/docs/recipes/shape-as-container.md b/docs/recipes/shape-as-container.md index 2c0d5cb8f..cf19e1c55 100644 --- a/docs/recipes/shape-as-container.md +++ b/docs/recipes/shape-as-container.md @@ -160,5 +160,5 @@ can rely on it across releases. ## See also - [ADR 0001 — Shape-as-container](../adr/0001-shape-as-container.md) — design rationale. -- [`ShapeContainerBuilder`](../../src/main/java/com/demcha/compose/document/dsl/ShapeContainerBuilder.java) — full builder surface. -- [`ShapeOutline`](../../src/main/java/com/demcha/compose/document/style/ShapeOutline.java) — sealed value type for the supported outline kinds. +- [`ShapeContainerBuilder`](../../core/src/main/java/com/demcha/compose/document/dsl/ShapeContainerBuilder.java) — full builder surface. +- [`ShapeOutline`](../../core/src/main/java/com/demcha/compose/document/style/ShapeOutline.java) — sealed value type for the supported outline kinds. diff --git a/docs/recipes/snapshot-testing.md b/docs/recipes/snapshot-testing.md index 2973a4709..e77363950 100644 --- a/docs/recipes/snapshot-testing.md +++ b/docs/recipes/snapshot-testing.md @@ -28,7 +28,7 @@ void invoiceLayoutIsStable() throws Exception { ``` The slash-delimited key is a logical path: this example compares against -`src/test/resources/layout-snapshots/templates/invoice/invoice_baseline.json`. +`core/src/test/resources/layout-snapshots/templates/invoice/invoice_baseline.json`. `LayoutSnapshotAssertions` ships in the `graph-compose-testing` artifact (`io.github.demchaav:graph-compose-testing`), split out of the engine jar in 2.0. Add it at test scope alongside `graph-compose`; the import path is @@ -71,7 +71,7 @@ compose the template with fixed sample data, assert the snapshot, and a GraphCompose upgrade (or your own refactor) that shifts the layout fails loudly instead of silently re-flowing a customer document. -Baselines default to `src/test/resources/layout-snapshots`; overloads +Baselines default to `core/src/test/resources/layout-snapshots`; overloads take explicit roots when your project keeps them elsewhere: ```java diff --git a/docs/recipes/tables.md b/docs/recipes/tables.md index 264b3e356..a7a4f4d91 100644 --- a/docs/recipes/tables.md +++ b/docs/recipes/tables.md @@ -182,7 +182,7 @@ The Phase D feature set pins five test invariants: ## See also -- [`TableBuilder`](../../src/main/java/com/demcha/compose/document/dsl/TableBuilder.java) — full builder API. -- [`DocumentTableCell`](../../src/main/java/com/demcha/compose/document/table/DocumentTableCell.java) — cell payload with `colSpan` / `rowSpan` mutators. -- [`DocumentTableStyle`](../../src/main/java/com/demcha/compose/document/table/DocumentTableStyle.java) — style overrides for fill, stroke, text style, padding. +- [`TableBuilder`](../../core/src/main/java/com/demcha/compose/document/dsl/TableBuilder.java) — full builder API. +- [`DocumentTableCell`](../../core/src/main/java/com/demcha/compose/document/table/DocumentTableCell.java) — cell payload with `colSpan` / `rowSpan` mutators. +- [`DocumentTableStyle`](../../core/src/main/java/com/demcha/compose/document/table/DocumentTableStyle.java) — style overrides for fill, stroke, text style, padding. - Runnable example: `examples/src/main/java/com/demcha/examples/features/tables/TableAdvancedExample.java`. diff --git a/docs/recipes/transforms.md b/docs/recipes/transforms.md index 7737457d4..63e14b742 100644 --- a/docs/recipes/transforms.md +++ b/docs/recipes/transforms.md @@ -128,8 +128,8 @@ The transform and z-index features pin three test invariants: ## See also -- [`DocumentTransform`](../../src/main/java/com/demcha/compose/document/style/DocumentTransform.java) — value type with `none()` / `rotate()` / `scale()` factories. -- [`Transformable`](../../src/main/java/com/demcha/compose/document/dsl/Transformable.java) — mixin interface, default rotate/scale shortcuts. -- [`LayerStackNode.Layer`](../../src/main/java/com/demcha/compose/document/node/LayerStackNode.java) — `zIndex` field plus back-compat constructors. +- [`DocumentTransform`](../../core/src/main/java/com/demcha/compose/document/style/DocumentTransform.java) — value type with `none()` / `rotate()` / `scale()` factories. +- [`Transformable`](../../core/src/main/java/com/demcha/compose/document/dsl/Transformable.java) — mixin interface, default rotate/scale shortcuts. +- [`LayerStackNode.Layer`](../../core/src/main/java/com/demcha/compose/document/node/LayerStackNode.java) — `zIndex` field plus back-compat constructors. - [Shape-as-container recipe](shape-as-container.md) — base shape composition before adding transforms. - Runnable example: `examples/src/main/java/com/demcha/examples/TransformsExample.java`. diff --git a/docs/roadmaps/migration-v1-5-to-v1-6.md b/docs/roadmaps/migration-v1-5-to-v1-6.md index b3a6d2689..99e1966cc 100644 --- a/docs/roadmaps/migration-v1-5-to-v1-6.md +++ b/docs/roadmaps/migration-v1-5-to-v1-6.md @@ -74,7 +74,7 @@ The `com.demcha.compose.document.layout` package — including `LayoutGraph`, `PlacedFragment`, `PlacedNode`, `BoxConstraints`, `MeasureResult`, `NodeDefinition`, `PreparedNode`, and ~15 other records — is now annotated -[`@Internal`](../../src/main/java/com/demcha/compose/document/api/Internal.java) +[`@Internal`](../../core/src/main/java/com/demcha/compose/document/api/Internal.java) at the package level. The annotation is a documentation signal, not a visibility change. Code diff --git a/docs/templates/v1-classic/README.md b/docs/templates/v1-classic/README.md index 39f7d0066..3a900e605 100644 --- a/docs/templates/v1-classic/README.md +++ b/docs/templates/v1-classic/README.md @@ -128,8 +128,8 @@ copy-and-tweak entry point for callers extending their own branding. ## Visual parity & regression coverage -- **28 layout-snapshot baselines** under `src/test/resources/layout-snapshots/canonical-templates/{cv-v2,coverletter-v2}/` lock the rendered tree of every preset. -- **29 pixel-diff baselines** under `src/test/resources/visual-baselines/{cv-v2,coverletter-v2}/` enforce per-channel rendering parity against the v1 reference renders. The gate runs on every CI build with a calibrated `mismatchedPixelBudget` for cross-platform PDFBox font drift. +- **28 layout-snapshot baselines** under `core/src/test/resources/layout-snapshots/canonical-templates/{cv-v2,coverletter-v2}/` lock the rendered tree of every preset. +- **29 pixel-diff baselines** under `core/src/test/resources/visual-baselines/{cv-v2,coverletter-v2}/` enforce per-channel rendering parity against the v1 reference renders. The gate runs on every CI build with a calibrated `mismatchedPixelBudget` for cross-platform PDFBox font drift. - Re-bless after a deliberate visual change with `-Dgraphcompose.visual.approve=true`. --- diff --git a/docs/templates/v1-classic/authoring.md b/docs/templates/v1-classic/authoring.md index 1d458e2a8..4dbb95c2f 100644 --- a/docs/templates/v1-classic/authoring.md +++ b/docs/templates/v1-classic/authoring.md @@ -408,7 +408,7 @@ class StatusReportTemplateV1Test { ``` Pin one snapshot per supported theme. The first run writes the JSON -under `src/test/resources/layout-snapshots/...`; re-run with +under `core/src/test/resources/layout-snapshots/...`; re-run with `-Dgraphcompose.updateSnapshots=true` to accept a deliberate change. PDFs land under `target/visual-tests//.pdf`. They diff --git a/docs/templates/v2-layered/authoring-presets.md b/docs/templates/v2-layered/authoring-presets.md index 1d2e234f1..1b75403d9 100644 --- a/docs/templates/v2-layered/authoring-presets.md +++ b/docs/templates/v2-layered/authoring-presets.md @@ -383,7 +383,7 @@ When you do add a new widget: A new preset needs at least: -1. **Smoke test** in `src/test/.../cv/presets/MyPresetSmokeTest.java`: +1. **Smoke test** in `core/src/test/.../cv/presets/MyPresetSmokeTest.java`: - `exposes_stable_identity` — checks `id()` and `displayName()` - `default_factory_renders` — calls `create().compose(...)` with a full sample document, asserts `session.roots()` is non-empty diff --git a/docs/templates/v2-layered/contributor-guide.md b/docs/templates/v2-layered/contributor-guide.md index ee4c662ef..aab4da0fa 100644 --- a/docs/templates/v2-layered/contributor-guide.md +++ b/docs/templates/v2-layered/contributor-guide.md @@ -301,7 +301,7 @@ git commit -m "test: refresh visual baselines after " ``` **Where baselines live:** -`src/test/resources/visual-baselines/-v2-layered/-page-N.png` +`core/src/test/resources/visual-baselines/-v2-layered/-page-N.png` One PNG per page per preset. Pages overflow naturally — a 2-page preset gets `-page-0.png` and `-page-1.png`. @@ -331,7 +331,7 @@ baseline so a reviewer can see exactly what changed before deciding to re-bless or fix. **Reference**: see -`src/test/java/com/demcha/compose/document/templates/cv/presets/CvV2VisualParityTest.java` +`core/src/test/java/com/demcha/compose/document/templates/cv/presets/CvV2VisualParityTest.java` — a 200-line drop-in template you can copy for a new family. --- diff --git a/examples/pom.xml b/examples/pom.xml index 5bc68cd42..b9c7c1dbc 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -8,7 +8,7 @@ io.github.demchaav graph-compose-build 2.0.0-SNAPSHOT - ../aggregator/pom.xml + ../pom.xml graph-compose-examples diff --git a/jitpack.yml b/jitpack.yml index c0859639d..e49118c38 100644 --- a/jitpack.yml +++ b/jitpack.yml @@ -12,4 +12,4 @@ jdk: - openjdk17 install: - - ./mvnw -DskipTests -f aggregator/pom.xml install -pl :graph-compose-core,:graph-compose + - ./mvnw -DskipTests install -pl :graph-compose-core,:graph-compose diff --git a/pom.xml b/pom.xml index 2746963bc..274107bdf 100644 --- a/pom.xml +++ b/pom.xml @@ -5,738 +5,82 @@ 4.0.0 io.github.demchaav - graph-compose-core + graph-compose-build 2.0.0-SNAPSHOT - - GraphCompose Core - A declarative layout engine for programmatic document generation, implemented primarily in Java. This is the lean engine coordinate; depend on the `graph-compose` artifact for the drop-in, PDF-capable install. - https://github.com/DemchaAV/GraphCompose - - - - MIT License - https://opensource.org/licenses/MIT - repo - - - - - - DemchaAV - Artem Demchyshyn - demchishynartem@gmail.com - https://github.com/DemchaAV - - Lead Developer - Architect - - UTC 0 - - - - - scm:git:https://github.com/DemchaAV/GraphCompose.git - scm:git:ssh://git@github.com/DemchaAV/GraphCompose.git - https://github.com/DemchaAV/GraphCompose/tree/main - - + pom + + GraphCompose Build Aggregator + + Non-published reactor aggregator at the repository root. Builds the + library plus the examples and benchmarks modules in one pass and gives a + single entry point for `versions:set`, so a version bump propagates to + every module at once. This is NOT a Maven parent and is NOT published to + JitPack: the engine lives in the standalone core/pom.xml + (graph-compose-core) so consumer coordinates never change. + + Usage: + mvn -DskipTests install # build everything + mvn versions:set -DnewVersion=X # bump all modules + + + - - UTF-8 - 17 - - - 0.64.8 - 1.5.37 - 1.18.46 - 2.0.18 - - - 3.27.7 - 6.1.1 - 5.23.0 - 1.18.11 - 1.4.2 - 1.9.3 - - - 1.0.0 - 1.0.0 - - - 0.11.0 - 3.15.0 - 3.6.3 - 3.2.8 - 3.5.0 - 3.12.0 - 3.4.0 - 3.5.6 - 0.8.12 - - - - - - 3.8.0 - 17 - - - 0.26.1 - v1.7.0 - - - true - - - - - - org.junit - junit-bom - ${junit.bom.version} - pom - import - - - - - - - - org.projectlombok - lombok - ${lombok.version} - provided - - - - org.slf4j - slf4j-api - ${slf4j.version} - - - - - com.vladsch.flexmark - flexmark - ${flexmark.version} - - - com.vladsch.flexmark - flexmark-util-ast - ${flexmark.version} - - - com.vladsch.flexmark - flexmark-util-data - ${flexmark.version} - - - + true - - io.github.demchaav - graph-compose-fonts - ${graphcompose.fonts.version} - test - - - io.github.demchaav - graph-compose-emoji - ${graphcompose.emoji.version} - test - - - - ch.qos.logback - logback-classic - ${logback.version} - test - - - - org.junit.jupiter - junit-jupiter - test - - - org.assertj - assertj-core - ${assertj.version} - test - - - org.mockito - mockito-core - ${mockito.version} - test - - - net.bytebuddy - byte-buddy - - - - - net.bytebuddy - byte-buddy - ${byteBuddy.version} - test - - - org.mockito - mockito-junit-jupiter - ${mockito.version} - test - - - - - com.tngtech.archunit - archunit - ${archunit.version} - test - - - - - net.jqwik - jqwik - ${jqwik.version} - test - - - - - - - - - - src/test/resources - - - + 1.0.0 - - - - org.apache.maven.plugins - maven-clean-plugin - 3.5.0 - - - org.apache.maven.plugins - maven-install-plugin - 3.1.4 - - - org.apache.maven.plugins - maven-site-plugin - 3.22.0 - - - org.apache.maven.plugins - maven-resources-plugin - 3.5.0 - - - org.apache.maven.plugins - maven-deploy-plugin - 3.1.4 - - - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - ${maven.enforcer.plugin.version} - - - enforce-toolchain-and-plugin-versions - validate - - enforce - - - - - [${enforcer.requireMavenVersion},) - GraphCompose requires Maven ${enforcer.requireMavenVersion} or newer. - - - [${enforcer.requireJavaVersion},) - GraphCompose requires JDK ${enforcer.requireJavaVersion} or newer. - - - true - true - true - Every plugin must declare an explicit non-LATEST/RELEASE version. See PR-7.1 (exec-plugin drift) for the lesson. - - - true - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven.compiler.plugin.version} - - ${maven.compiler.release} - - - org.projectlombok - lombok - ${lombok.version} - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven.surefire.plugin.version} - - - @{argLine} -javaagent:${settings.localRepository}/org/mockito/mockito-core/${mockito.version}/mockito-core-${mockito.version}.jar - - - - - - org.jacoco - jacoco-maven-plugin - ${jacoco.plugin.version} - - - jacoco-prepare-agent - - prepare-agent - - - - jacoco-report - test - - report - - - - - - - - org.apache.maven.plugins - maven-jar-plugin - ${maven.jar.plugin.version} - - - attach-test-jar - - test-jar - - - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - ${maven.javadoc.plugin.version} - - all - true - public - true - com.demcha.compose.document - - - - - - + 1.0.0 - - release - - - - - org.apache.maven.plugins - maven-jar-plugin - ${maven.jar.plugin.version} - - - attach-test-jar - none - - - - - org.apache.maven.plugins - maven-source-plugin - ${maven.source.plugin.version} - - - attach-sources - package - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - ${maven.javadoc.plugin.version} - - - attach-javadocs - package - - jar - - - - none - false - true - - - - - - - org.apache.maven.plugins - maven-gpg-plugin - ${maven.gpg.plugin.version} - - - sign-artifacts - verify - - sign - - - ${gpg.skip} - - --pinentry-mode - loopback - - - - - - - - org.sonatype.central - central-publishing-maven-plugin - ${central.publishing.plugin.version} - true - - central - false - validated - - - - - + 0.8.12 + + + + core + render-pdf + wrapper + fonts + emoji + render-docx + render-pptx + templates + testing + bundle + examples + benchmarks + qa - - japicmp - - - jitpack.io - https://jitpack.io - - - - - - com.github.siom79.japicmp - japicmp-maven-plugin - ${japicmp.version} - - - japicmp-against-baseline - verify - - cmp - - - - - - - com.github.DemchaAV - GraphCompose - ${japicmp.baseline} - - - - - ${project.build.directory}/${project.build.finalName}.jar - - - - true - - false - false - false - true - true - - - com.demcha.compose.document.layout.payloads - - com.demcha.compose.engine.measurement.TextMeasurementSystem - - com.demcha.compose.ConfigLoader - - - - - - - - + coverage + diff --git a/qa/README.md b/qa/README.md index 3bdafbc48..c5e93301b 100644 --- a/qa/README.md +++ b/qa/README.md @@ -15,7 +15,7 @@ extraction tests, the documentation snippet-compile guard, and the dev-tool laun Run it as part of the reactor: ```bash -./mvnw -f aggregator/pom.xml test # or: ./mvnw verify -pl :graph-compose-qa -am +./mvnw test # or: ./mvnw verify -pl :graph-compose-qa -am ``` See [CONTRIBUTING.md](../CONTRIBUTING.md) for the build/test workflow. diff --git a/qa/pom.xml b/qa/pom.xml index a5dd9232a..4b993bee8 100644 --- a/qa/pom.xml +++ b/qa/pom.xml @@ -23,7 +23,7 @@ io.github.demchaav graph-compose-build 2.0.0-SNAPSHOT - ../aggregator/pom.xml + ../pom.xml graph-compose-qa diff --git a/qa/src/test/java/com/demcha/compose/qa/RepoPaths.java b/qa/src/test/java/com/demcha/compose/qa/RepoPaths.java index 2fa009f7b..81507e32b 100644 --- a/qa/src/test/java/com/demcha/compose/qa/RepoPaths.java +++ b/qa/src/test/java/com/demcha/compose/qa/RepoPaths.java @@ -18,13 +18,14 @@ private RepoPaths() { /** * The repository root, located by walking up from the working directory until a - * directory that contains {@code aggregator/pom.xml} is found. + * directory that contains the Maven wrapper ({@code mvnw}) is found — a marker + * unique to the repository root and stable across the module layout. * * @return the absolute repository-root path */ public static Path repoRoot() { for (Path dir = Path.of("").toAbsolutePath(); dir != null; dir = dir.getParent()) { - if (Files.exists(dir.resolve("aggregator/pom.xml"))) { + if (Files.exists(dir.resolve("mvnw"))) { return dir; } } diff --git a/scripts/ab-bench.sh b/scripts/ab-bench.sh index 3e8791f52..b5b8fc109 100755 --- a/scripts/ab-bench.sh +++ b/scripts/ab-bench.sh @@ -149,8 +149,14 @@ trap restore EXIT CP="" build_engine_and_classpath() { # Install the engine for the current branch so the benchmark runs against IT, - # then (re)build the benchmark classpath. - "$MVNW" -B -ntp -DskipTests install -pl . >/dev/null + # then (re)build the benchmark classpath. This script checks out other + # branches, whose layout may differ from the one it lives on: the 2.0 line + # keeps the engine in core/ under a root aggregator (-pl :graph-compose-core), + # while older branches build it at the repository root (-pl .). Detect by the + # presence of core/pom.xml so a single A/B run can cross the layout boundary. + local engine_pl="." + [ -f core/pom.xml ] && engine_pl=":graph-compose-core" + "$MVNW" -B -ntp -DskipTests install -pl "$engine_pl" >/dev/null "$MVNW" -B -ntp -f benchmarks/pom.xml test-compile dependency:build-classpath \ -DincludeScope=test -Dmdep.outputFile=target/benchmark.classpath >/dev/null CP="benchmarks/target/test-classes${SEP}benchmarks/target/classes${SEP}$(cat benchmarks/target/benchmark.classpath)" diff --git a/scripts/cut-release.ps1 b/scripts/cut-release.ps1 index afed08540..9f2f632d4 100644 --- a/scripts/cut-release.ps1 +++ b/scripts/cut-release.ps1 @@ -306,7 +306,7 @@ function Run-ShowcaseSync { # Central); each must be installed before exec:java can resolve them. $exampleSnapshotSiblings = @('render-pdf/pom.xml', 'wrapper/pom.xml', 'render-docx/pom.xml', 'templates/pom.xml', 'testing/pom.xml') if ($DryRun) { - Write-Host " [DRY RUN] $mvnw -B -ntp -DskipTests install -pl ." -ForegroundColor Yellow + Write-Host " [DRY RUN] $mvnw -B -ntp -DskipTests install -pl :graph-compose-core" -ForegroundColor Yellow foreach ($modulePom in $exampleSnapshotSiblings) { Write-Host " [DRY RUN] $mvnw -B -ntp -DskipTests install -f $modulePom" -ForegroundColor Yellow } @@ -324,8 +324,8 @@ function Run-ShowcaseSync { # each sibling first so the examples module can resolve them. Bug # surfaced during v1.6.5 cut: Step 4 aborted with exit 1; we had to # install by hand and resume manually. - Write-Host " > $mvnw -B -ntp -DskipTests install -pl ." -ForegroundColor DarkGray - & $mvnw -B -ntp -DskipTests install -pl . 2>&1 | ForEach-Object { + Write-Host " > $mvnw -B -ntp -DskipTests install -pl :graph-compose-core" -ForegroundColor DarkGray + & $mvnw -B -ntp -DskipTests install -pl :graph-compose-core 2>&1 | ForEach-Object { if ($_ -match 'BUILD SUCCESS|BUILD FAILURE|ERROR') { Write-Host " $_" -ForegroundColor DarkGray } @@ -485,15 +485,16 @@ try { Step 1 "Bump versions to $Version (poms + README install snippets)" # All ENGINE-LINE version sites must move together or # VersionConsistencyGuardTest fails the verify gate below: the standalone - # library pom.xml (the published artifact), the reactor aggregator, the - # examples/benchmarks children whose inherited version tracks the - # aggregator, and the standalone bundle aggregate (graph-compose-bundle). + # the engine core/pom.xml (the published artifact), the root reactor + # aggregator (pom.xml), the examples/benchmarks children whose inherited + # version tracks the aggregator, and the standalone bundle + # aggregate (graph-compose-bundle). # NOTE: graph-compose-fonts is deliberately absent — it carries an # INDEPENDENT version line (currently 1.0.0) and ships on its own fonts-v* # tag, so an engine release must never rewrite it. Its first is # 1.0.0, not the engine version, so even a stray reactor bump would skip it. + Update-PomVersion (Join-Path $repoRoot 'core/pom.xml') $Version Update-PomVersion (Join-Path $repoRoot 'pom.xml') $Version - Update-PomVersion (Join-Path $repoRoot 'aggregator/pom.xml') $Version Update-PomVersion (Join-Path $repoRoot 'examples/pom.xml') $Version Update-PomVersion (Join-Path $repoRoot 'benchmarks/pom.xml') $Version # render-pdf / render-docx / render-pptx track the engine line (lockstep): each @@ -558,9 +559,9 @@ try { if (-not $SkipVerify) { Step 5 "Run mvnw verify (sanity check)" if ($DryRun) { - Write-Host " [DRY RUN] $mvnw verify -pl ." -ForegroundColor Yellow + Write-Host " [DRY RUN] $mvnw verify -pl :graph-compose-core" -ForegroundColor Yellow } else { - & $mvnw verify -pl . 2>&1 | ForEach-Object { + & $mvnw verify -pl :graph-compose-core 2>&1 | ForEach-Object { if ($_ -match 'Tests run:|BUILD SUCCESS|BUILD FAILURE|ERROR') { Write-Host " $_" -ForegroundColor DarkGray } @@ -578,8 +579,8 @@ try { $commitMsg = "Release v$Version" # Version/doc files always ship; the showcase files only when it was regenerated. $commitFiles = @( + 'core/pom.xml', 'pom.xml', - 'aggregator/pom.xml', 'bundle/pom.xml', 'render-pdf/pom.xml', 'render-docx/pom.xml', diff --git a/scripts/run-benchmark-tests.ps1 b/scripts/run-benchmark-tests.ps1 index 1ff7fea7d..999395f26 100644 --- a/scripts/run-benchmark-tests.ps1 +++ b/scripts/run-benchmark-tests.ps1 @@ -6,7 +6,7 @@ Runs the GraphCompose benchmarks-module JUnit tests (the diff / median tooling t .DESCRIPTION The benchmarks live in a sibling Maven module (benchmarks/pom.xml) that depends on the published graph-compose jar plus its tests-classifier jar, so they are -not part of the main reactor and are not run by `./mvnw test -pl .`. This +not part of the main reactor and are not run by `./mvnw test -pl :graph-compose-core`. This wrapper runs the module's JUnit tests through the Maven wrapper. Use -Test to run a single test class or method using Surefire's -Dtest syntax. @@ -45,7 +45,7 @@ Push-Location $repoRoot try { if ($Install) { Write-Host "Installing main graph-compose artifact into the local Maven repo..." -ForegroundColor Cyan - & $mavenWrapper "-B" "-ntp" "-DskipTests" "install" "-pl" "." + & $mavenWrapper "-B" "-ntp" "-DskipTests" "install" "-pl" ":graph-compose-core" if ($LASTEXITCODE -ne 0) { throw "Install of the main module failed with exit code $LASTEXITCODE" } diff --git a/scripts/run-benchmarks.ps1 b/scripts/run-benchmarks.ps1 index 734f887e6..fde985322 100644 --- a/scripts/run-benchmarks.ps1 +++ b/scripts/run-benchmarks.ps1 @@ -319,8 +319,13 @@ try { # JasperReports comparison libraries. We install the main module so # its tests-classifier jar is available, then build the benchmarks # classpath from the sibling pom. + # Engine reactor coordinate differs by layout: the 2.0 line keeps the engine + # in core/ under a root aggregator (-pl :graph-compose-core), older branches + # build it at the repository root (-pl .). ab-bench.ps1 checks out other + # branches and re-invokes this script, so detect by core/pom.xml. + $enginePl = if (Test-Path (Join-Path $repoRoot 'core/pom.xml')) { ':graph-compose-core' } else { '.' } Invoke-LoggedCommand -Name "01-install-main" -Command { - & $mavenWrapper "-B" "-ntp" "-DskipTests" "install" "-pl" "." + & $mavenWrapper "-B" "-ntp" "-DskipTests" "install" "-pl" $enginePl } Invoke-LoggedCommand -Name "01-build-classpath" -Command {