Consolidate obfuscation, NewtonsoftJson, and All meta-package into ktsu.Essentials#1
Merged
Merged
Conversation
… to avoid DI greedy-ctor
Rename SerializationProviders/{Json,Toml,Yaml} to flat dotted-name root
folders matching the Semantics convention, drop the AssemblyName/RootNamespace
overrides, and let ktsu.Sdk derive identity from the folder path. Fixes the
PackageId that was frozen to ktsu.SerializationProviders.Json (missing the
Essentials prefix) before the csproj override could apply. Classes renamed to
<Provider>SerializationProvider to avoid namespace/type collisions.
Apply the same fix piloted on the serialization providers to all 38 remaining
provider projects across the 11 other categories. Each provider:
- moves to a flat dotted-name root folder (Essentials.<Category>.<Provider>),
matching the Semantics.* convention
- drops the AssemblyName/RootNamespace overrides so ktsu.Sdk derives identity
from the folder path (fixes PackageId, which was frozen to the prefix-less
ktsu.<Category>.<Provider> before the override could apply)
- gets its own namespace ktsu.Essentials.<Category>.<Provider> and a
collision-free class name <Provider><Category-singular> (e.g. Gzip ->
GzipCompressionProvider, SHA256 -> SHA256HashProvider)
The Xor provider's namespace keeps a targeted, namespace-scoped CA1716
suppression (Xor is a reserved keyword) in GlobalSuppressions.cs. Test project,
DI registrations, and type-name assertions updated accordingly.
Build: 0 warnings across all TFMs. Tests: 286/286 passing.
Adds Essentials.SerializationProviders.NewtonsoftJson (ktsu.Sdk naming convention), registers it in test DI, pins Newtonsoft.Json 13.0.4, and updates DiTests to expect 4 serialization providers. Full suite: 288/288 passing.
References all 42 provider implementation projects as package dependencies (IncludeBuildOutput=false, no lib). ZLib is conditionally excluded from netstandard2.1 (it targets net6.0+ only). Restores cleanly. Note: full dotnet pack is currently blocked repo-wide by a pre-existing NU1510 (System.Text.Json pruning warning-as-error), unrelated to this meta-package.
… naming convention
Reconcile the SDK-naming rename (this branch) with main's package-id/ApiCompat work. Resolution: rename wins (Essentials.<Category>.<Impl> layout and ktsu.Essentials.* package ids retained); fold in main's fix by adding <EnablePackageValidation>false</EnablePackageValidation> to every provider project and the core, and dropping the stale CompatibilitySuppressions.xml baselines. Full test suite: 288/288 passing.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Makes
ktsu.Essentialsa faithful superset ofktsu.Abstractions+ktsu.Common(Phase 1 of the consolidation). Also incorporates the repo-wide SDK-naming rename.What's included
Obfuscation (new capability)
IObfuscationProviderinterface in the core — reversible obfuscation, explicitly not encryption.Xor,Caesar,Reverse,BitRotate(byte transforms),Base64,Hex(compose the existing encoders), andComposite(pipelines a chain, deobfuscating in reverse order).Serialization
NewtonsoftJsonserializer from Common (ktsu.Essentials.SerializationProviders.NewtonsoftJson); pinnedNewtonsoft.Json13.0.4;DiTestsupdated to expect 4 serialization providers.Packaging
ktsu.Essentials.Allmeta-package referencing all 42 provider projects for a one-install experience (IncludeBuildOutput=false;ZLibconditionally excluded fromnetstandard2.1since it targets net6.0+). Restores cleanly.Docs
Design docs under
docs/superpowers/(spec + implementation plan).Taxonomy decision
Higher-level concerns compose primitives rather than duplicating them:
IPersistenceProvider<TKey>over a serializer (persistence already composes serialization). Common'sConfigurationProviderswere intentionally not ported.IEncodingProvider/ simple reversible byte ops.Verification
Known issue (pre-existing, not introduced here)
dotnet packcurrently fails repo-wide withNU1510("System.Text.Json will not be pruned" promoted to error by ktsu.Sdk 2.x) — confirmed by packing theJsonprovider alone. This is part of the ongoing SDK 2.x migration and should be resolved before publishing.Follow-up (separate PR)
Phase 2 — retiring
ktsu.Abstractions+ktsu.Common(obsolete interface shims, NuGet deprecations, repo archival, Sync-bot removal) — is deferred untilktsu.Essentialsis published, since the shims inherit from the published Essentials types.🤖 Generated with Claude Code