import { type EverythingAsCodeTags } from "https://deno.land/x/fathym_everything_as_code@v0.1.63-integration/src/fluent/EverythingAsCodeTags.ts";
EverythingAsCodeTags<T>
is a recursive type that applies tags to all properties of type T
.
Parameters:
T
: The input type to which tags are applied.
This type checks if the input type T
is an object (but not a native type like string or number) and applies various tag types:
EaCObjectTags
: Adds standard tags and details for an object.EaCStandardTags
: Handles regular fields and methods.EaCVertexDetailsTags
: Handles cases where the object containsEaCVertexDetails
.EaCAsCodeTags
: Applies specific tagging forEaCDetails
structures.
Example:
type Example = {
Details: {
"@Methods-handlers": { Compile: () => IoCContainer };
};
};
type Tagged = EverythingAsCodeTags<Example>;
definition: true extends IsObjectNotNative<T> ? EaCObjectTags<T> : T