Skip to content

Commit b1aa6b9

Browse files
committed
Prepare 0.1.0 package and verify packaged Fable consumption
1 parent 7d002c7 commit b1aa6b9

30 files changed

Lines changed: 66001 additions & 15 deletions

.github/workflows/ci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ jobs:
5151
- name: Check Fable 5 transpilation
5252
run: bash scripts/check-fable5-compat.sh
5353

54+
- name: Check packaged Fable transpilation
55+
run: bash scripts/check-fable-package-compat.sh
56+
57+
- name: Check packaged Fable 5 transpilation
58+
run: bash scripts/check-fable5-package-compat.sh
59+
5460
- name: Validate benchmark snapshot generator
5561
run: bash scripts/generate-benchmark-snapshot.sh --stdout-only
5662

README.md

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
<h1>
2-
<picture>
3-
<source media="(prefers-color-scheme: dark)" srcset="docs/logo-mark.png">
4-
<source media="(prefers-color-scheme: light)" srcset="docs/logo-mark.png">
5-
<img src="docs/logo-mark.png" alt="CodecMapper logo" width="35" align="absmiddle">
6-
</picture>
7-
CodecMapper
8-
</h1>
1+
# CodecMapper
92

103
[![CI](https://github.com/adz/CodecMapper/actions/workflows/ci.yml/badge.svg)](https://github.com/adz/CodecMapper/actions/workflows/ci.yml)
114
[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-0a7ea4)](https://adz.github.io/CodecMapper/)
@@ -220,14 +213,14 @@ Compared with DTO-heavy designs, the difference is:
220213

221214
## Compatibility
222215

223-
- Shared compatibility coverage lives in [tests/CodecMapper.CompatibilitySentinel](/home/adam/projects/CodecMapper/tests/CodecMapper.CompatibilitySentinel), with thin Native AOT and Fable shell apps under [tests/CodecMapper.AotTests](/home/adam/projects/CodecMapper/tests/CodecMapper.AotTests) and [tests/CodecMapper.FableTests](/home/adam/projects/CodecMapper/tests/CodecMapper.FableTests).
224-
- CI runs both the .NET sentinel app and a real Fable transpilation check of the Fable sentinel project.
216+
- Shared compatibility coverage lives in `tests/CodecMapper.CompatibilitySentinel`, with thin Native AOT and Fable shell apps under `tests/CodecMapper.AotTests` and `tests/CodecMapper.FableTests`.
217+
- CI runs both the in-repo Fable sentinel and a packaged-consumer Fable transpilation check against the locally packed `CodecMapper` NuGet.
225218
- The shared sentinel now includes selected invalid and out-of-range numeric cases, so the portability story covers failure behavior as well as happy-path round-trips.
226219

227220
## Performance Work
228221

229222
When benchmark numbers move, profile before changing the runtime. The repo now includes a repeatable `perf` workflow for the manual benchmark runner in [docs/HOW_TO_PROFILE_BENCHMARK_HOT_PATHS.md](docs/HOW_TO_PROFILE_BENCHMARK_HOT_PATHS.md).
230-
- The contract bridge in [src/CodecMapper.Bridge](/home/adam/projects/CodecMapper/src/CodecMapper.Bridge) is `.NET`-only by design; the portable surface is the core schema/JSON/XML library in [src/CodecMapper](/home/adam/projects/CodecMapper/src/CodecMapper).
223+
- The contract bridge in `src/CodecMapper.Bridge` is `.NET`-only by design; the portable surface is the core schema/JSON/XML library in `src/CodecMapper`.
231224

232225
## Docs
233226

RELEASE_NOTES.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
# Release Notes
22

3-
## Unreleased
3+
## 0.1.0 - 2026-03-11
44

55
- Initial public `CodecMapper` repository setup
66
- Typed pipeline schema DSL
77
- JSON and XML codecs from one schema model
8+
- YAML and key/value projections from the same authored schema model
9+
- JSON Schema export and import support
810
- .NET bridge importers for `System.Text.Json`, `Newtonsoft.Json`, and `DataContract`
11+
- Fable-ready NuGet packaging validated through local packed-package consumer checks
912
- Public getting-started, config-contract, and API reference docs
1013

1114
## Release Process
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
5+
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
6+
out_dir="/tmp/codecmapper-fable-package-check"
7+
package_cache="$repo_root/tests/CodecMapper.FablePackageTests/.packages"
8+
9+
cd "$repo_root"
10+
11+
rm -rf "$out_dir" "$package_cache"
12+
dotnet pack src/CodecMapper/CodecMapper.fsproj --nologo -v minimal
13+
dotnet tool run fable -- tests/CodecMapper.FablePackageTests -o "$out_dir" --noRestore --silent
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
5+
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
6+
tool_dir="/tmp/codecmapper-fable5-package-tool"
7+
out_dir="/tmp/codecmapper-fable5-package-check"
8+
package_cache="$repo_root/tests/CodecMapper.FablePackageTests/.packages"
9+
dotnet_root="$(dirname "$(command -v dotnet)")"
10+
11+
cd "$repo_root"
12+
13+
rm -rf "$tool_dir" "$out_dir" "$package_cache"
14+
dotnet pack src/CodecMapper/CodecMapper.fsproj --nologo -v minimal
15+
dotnet tool install fable --version 5.0.0-rc.2 --tool-path "$tool_dir"
16+
17+
DOTNET_ROOT="$dotnet_root" PATH="$dotnet_root:$PATH" \
18+
"$tool_dir/fable" tests/CodecMapper.FablePackageTests -o "$out_dir" --noRestore --silent

src/CodecMapper/CodecMapper.fsproj

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44
<TargetFramework>net10.0</TargetFramework>
55
<GenerateDocumentationFile>true</GenerateDocumentationFile>
66
<PackageId>CodecMapper</PackageId>
7-
<Authors>Adam Chester</Authors>
7+
<Version>0.1.0</Version>
8+
<Authors>Adam Davies</Authors>
89
<Description>Schema-first, type-safe JSON and XML codecs for F# with Native AOT and Fable support.</Description>
910
<PackageProjectUrl>https://adz.github.io/CodecMapper/</PackageProjectUrl>
1011
<RepositoryUrl>https://github.com/adz/CodecMapper</RepositoryUrl>
1112
<RepositoryType>git</RepositoryType>
1213
<PackageReadmeFile>README.md</PackageReadmeFile>
13-
<PackageLicenseExpression>MIT</PackageLicenseExpression>
14-
<PackageTags>fsharp;json;xml;serialization;deserialization;codec;schema-first;type-safe;fable;native-aot;data-contract;json-schema</PackageTags>
14+
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
15+
<PackageReleaseNotes>First public preview release of CodecMapper with schema DSL, shared JSON/XML codecs, YAML and key/value projections, JSON Schema import/export, and the .NET bridge package in the repo.</PackageReleaseNotes>
16+
<PackageTags>fsharp;json;xml;serialization;deserialization;codec;schema-first;type-safe;fable;fable-javascript;native-aot;data-contract;json-schema</PackageTags>
1517
</PropertyGroup>
1618

1719
<ItemGroup>
@@ -26,6 +28,14 @@
2628

2729
<ItemGroup>
2830
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
31+
<Content Include="$(MSBuildProjectFile)" Pack="true" PackagePath="fable/" />
32+
<Content Include="Core.fs" Pack="true" PackagePath="fable/" />
33+
<Content Include="Schema.fs" Pack="true" PackagePath="fable/" />
34+
<Content Include="Json.fs" Pack="true" PackagePath="fable/" />
35+
<Content Include="JsonSchema.fs" Pack="true" PackagePath="fable/" />
36+
<Content Include="Xml.fs" Pack="true" PackagePath="fable/" />
37+
<Content Include="KeyValue.fs" Pack="true" PackagePath="fable/" />
38+
<Content Include="Yaml.fs" Pack="true" PackagePath="fable/" />
2939
</ItemGroup>
3040

3141
</Project>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"version": 2,
3+
"contentHash": "EoURv9t7SGTaOJbCdkTDinHP6wWVcmBLv+NRCngJDIn6whBlcAAbscFqFAEkMjMgiVrU4X2h2s51xCQiNqeH5A==",
4+
"source": "/home/adam/projects/CodecMapper/src/CodecMapper/bin/Release/"
5+
}

0 commit comments

Comments
 (0)