Universal.Common.Formats.Kiwi
1.0.2
dotnet add package Universal.Common.Formats.Kiwi --version 1.0.2
NuGet\Install-Package Universal.Common.Formats.Kiwi -Version 1.0.2
<PackageReference Include="Universal.Common.Formats.Kiwi" Version="1.0.2" />
<PackageVersion Include="Universal.Common.Formats.Kiwi" Version="1.0.2" />
<PackageReference Include="Universal.Common.Formats.Kiwi" />
paket add Universal.Common.Formats.Kiwi --version 1.0.2
#r "nuget: Universal.Common.Formats.Kiwi, 1.0.2"
#:package Universal.Common.Formats.Kiwi@1.0.2
#addin nuget:?package=Universal.Common.Formats.Kiwi&version=1.0.2
#tool nuget:?package=Universal.Common.Formats.Kiwi&version=1.0.2
Universal.Common.Formats.Kiwi
Library for reading and writing the Kiwi schema-based binary serialization format (the format Figma uses for .fig files, clipboard payloads, and its live document protocol).
Kiwi is schema-driven and self-describing: a schema (its enums, structs, and messages) is itself encoded in Kiwi's own binary form, so a file can travel with the exact schema it was written against. This library decodes and encodes that binary schema, then dynamically decodes and encodes struct/message/enum data against it - there is no need to generate C# types at compile time for each schema you consume.
Quickstart
byte[] binarySchema = File.ReadAllBytes("schema.bkiwi");
KiwiSchema schema = KiwiSchema.Decode(binarySchema);
byte[] data = File.ReadAllBytes("message.bin");
KiwiObject document = schema.DecodeObject("Document", data);
string name = (string)document["name"];
object[] children = (object[])document["children"];
To construct and write your own data against a schema:
KiwiObject point = new KiwiObject("Point");
point["x"] = 1.5f;
point["y"] = -2.25f;
byte[] encoded = schema.EncodeObject("Point", point);
Verified byte-for-byte against the official evanw/kiwi reference implementation (the kiwi-schema npm package), including its own test-suite fixtures.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Universal.Common.Formats.Kiwi:
| Package | Downloads |
|---|---|
|
Universal.Common.Formats.Fig
Reads and writes Figma .fig file containers and their Kiwi-encoded document data. |
|
|
Universal.Operative.Sdk.Figma
Local Figma file authoring and inspection tools plus Figma REST tools for Universal.Operative. |
|
|
Universal.Design.Figma
Projects resolved Universal.Design systems to Figma variables and document nodes. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Preserves decoded message field order when writing.