 9bdcbe0447
			
		
	
	9bdcbe0447
	
	
	
		
			
			Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			453 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			453 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package schemadmt
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/ipld/go-ipld-prime/datamodel"
 | |
| 	"github.com/ipld/go-ipld-prime/node/bindnode"
 | |
| 	"github.com/ipld/go-ipld-prime/schema"
 | |
| )
 | |
| 
 | |
| // Prototypes contains some schema.TypedPrototype values which match
 | |
| // the IPLD schema-schema -- that is, the schema that describes IPLD schemas.
 | |
| // These prototypes create an in-memory representation that is backed by
 | |
| // structs in this package and bindnode.
 | |
| var Prototypes struct {
 | |
| 	Schema schema.TypedPrototype
 | |
| }
 | |
| 
 | |
| //go:generate go run -tags=schemadmtgen gen.go
 | |
| 
 | |
| // TypeSystem is a compiled equivalent of the IPLD schema-schema -- that is, the schema that describes IPLD schemas.
 | |
| //
 | |
| // The IPLD schema-schema can be found at https://ipld.io/specs/schemas/schema-schema.ipldsch .
 | |
| var TypeSystem schema.TypeSystem
 | |
| 
 | |
| // In this init function, we manually create a type system that *matches* the IPLD schema-schema.
 | |
| // This manual work is unfortunate, and also must be kept in-sync manually,
 | |
| // but is important because breaks a cyclic dependency --
 | |
| // we use the compiled schema-schema produced by this to parse other schema documents.
 | |
| // We would also use it to parse... the IPLD schema-schema... if that weren't a cyclic dependency.
 | |
| func init() {
 | |
| 	var ts schema.TypeSystem
 | |
| 	ts.Init()
 | |
| 
 | |
| 	// I've elided all references to Advancedlayouts stuff for the moment.
 | |
| 	// (Not because it's particularly hard or problematic; I just want to draw a slightly smaller circle first.)
 | |
| 
 | |
| 	// Prelude
 | |
| 	ts.Accumulate(schema.SpawnString("String"))
 | |
| 	ts.Accumulate(schema.SpawnBool("Bool"))
 | |
| 	ts.Accumulate(schema.SpawnInt("Int"))
 | |
| 	ts.Accumulate(schema.SpawnFloat("Float"))
 | |
| 	ts.Accumulate(schema.SpawnBytes("Bytes"))
 | |
| 
 | |
| 	// Schema-schema!
 | |
| 	// In the same order as the spec's ipldsch file.
 | |
| 	// Note that ADL stuff is excluded for now, as per above.
 | |
| 	ts.Accumulate(schema.SpawnString("TypeName"))
 | |
| 	ts.Accumulate(schema.SpawnStruct("Schema",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("types", "Map__TypeName__TypeDefn", false, false),
 | |
| 			// also: `advanced AdvancedDataLayoutMap`, but as commented above, we'll pursue this later.
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("Map__TypeName__TypeDefn",
 | |
| 		"TypeName", "TypeDefn", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("TypeDefn",
 | |
| 		[]schema.TypeName{
 | |
| 			"TypeDefnBool",
 | |
| 			"TypeDefnString",
 | |
| 			"TypeDefnBytes",
 | |
| 			"TypeDefnInt",
 | |
| 			"TypeDefnFloat",
 | |
| 			"TypeDefnMap",
 | |
| 			"TypeDefnList",
 | |
| 			"TypeDefnLink",
 | |
| 			"TypeDefnUnion",
 | |
| 			"TypeDefnStruct",
 | |
| 			"TypeDefnEnum",
 | |
| 			"TypeDefnUnit",
 | |
| 			"TypeDefnAny",
 | |
| 			"TypeDefnCopy",
 | |
| 		},
 | |
| 		// TODO: spec uses inline repr.
 | |
| 		schema.SpawnUnionRepresentationKeyed(map[string]schema.TypeName{
 | |
| 			"bool":   "TypeDefnBool",
 | |
| 			"string": "TypeDefnString",
 | |
| 			"bytes":  "TypeDefnBytes",
 | |
| 			"int":    "TypeDefnInt",
 | |
| 			"float":  "TypeDefnFloat",
 | |
| 			"map":    "TypeDefnMap",
 | |
| 			"list":   "TypeDefnList",
 | |
| 			"link":   "TypeDefnLink",
 | |
| 			"union":  "TypeDefnUnion",
 | |
| 			"struct": "TypeDefnStruct",
 | |
| 			"enum":   "TypeDefnEnum",
 | |
| 			"unit":   "TypeDefnUnit",
 | |
| 			"any":    "TypeDefnAny",
 | |
| 			"copy":   "TypeDefnCopy",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("TypeNameOrInlineDefn",
 | |
| 		[]schema.TypeName{
 | |
| 			"TypeName",
 | |
| 			"InlineDefn",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKinded(map[datamodel.Kind]schema.TypeName{
 | |
| 			datamodel.Kind_String: "TypeName",
 | |
| 			datamodel.Kind_Map:    "InlineDefn",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("InlineDefn",
 | |
| 		[]schema.TypeName{
 | |
| 			"TypeDefnMap",
 | |
| 			"TypeDefnList",
 | |
| 			"TypeDefnLink",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKeyed(map[string]schema.TypeName{
 | |
| 			"map":  "TypeDefnMap",
 | |
| 			"list": "TypeDefnList",
 | |
| 			"link": "TypeDefnLink",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnBool",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnString",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnBytes",
 | |
| 		[]schema.StructField{},
 | |
| 		// No BytesRepresentation, since we omit ADL stuff.
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnInt",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnFloat",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnMap",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("keyType", "TypeName", false, false),
 | |
| 			schema.SpawnStructField("valueType", "TypeNameOrInlineDefn", false, false),
 | |
| 			schema.SpawnStructField("valueNullable", "Bool", true, false),               // TODO: wants to use the "implicit" feature, but not supported yet
 | |
| 			schema.SpawnStructField("representation", "MapRepresentation", true, false), // XXXXXX
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("MapRepresentation",
 | |
| 		[]schema.TypeName{
 | |
| 			"MapRepresentation_Map",
 | |
| 			"MapRepresentation_Stringpairs",
 | |
| 			"MapRepresentation_Listpairs",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKeyed(map[string]schema.TypeName{
 | |
| 			"map":         "MapRepresentation_Map",
 | |
| 			"stringpairs": "MapRepresentation_Stringpairs",
 | |
| 			"listpairs":   "MapRepresentation_Listpairs",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("MapRepresentation_Map",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("MapRepresentation_Stringpairs",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("innerDelim", "String", false, false),
 | |
| 			schema.SpawnStructField("entryDelim", "String", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("MapRepresentation_Listpairs",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnList",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("valueType", "TypeNameOrInlineDefn", false, false),
 | |
| 			schema.SpawnStructField("valueNullable", "Bool", true, false),                // TODO: wants to use the "implicit" feature, but not supported yet
 | |
| 			schema.SpawnStructField("representation", "ListRepresentation", true, false), // XXXXXX
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("ListRepresentation",
 | |
| 		[]schema.TypeName{
 | |
| 			"ListRepresentation_List",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKeyed(map[string]schema.TypeName{
 | |
| 			"list": "ListRepresentation_List",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("ListRepresentation_List",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnUnion",
 | |
| 		[]schema.StructField{
 | |
| 			// n.b. we could conceivably allow TypeNameOrInlineDefn here rather than just TypeName.  but... we'd rather not: imagine what that means about the type-level behavior of the union: the name munge for the anonymous type would suddenly become load-bearing.  would rather not.
 | |
| 			schema.SpawnStructField("members", "List__UnionMember", false, false),
 | |
| 			schema.SpawnStructField("representation", "UnionRepresentation", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnList("List__UnionMember",
 | |
| 		"UnionMember", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("UnionMember",
 | |
| 		[]schema.TypeName{
 | |
| 			"TypeName",
 | |
| 			"UnionMemberInlineDefn",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKinded(map[datamodel.Kind]schema.TypeName{
 | |
| 			datamodel.Kind_String: "TypeName",
 | |
| 			datamodel.Kind_Map:    "UnionMemberInlineDefn",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("UnionMemberInlineDefn",
 | |
| 		[]schema.TypeName{
 | |
| 			"TypeDefnLink",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKeyed(map[string]schema.TypeName{
 | |
| 			"link": "TypeDefnLink",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnList("List__TypeName", // todo: this is a slight hack: should be an anon inside TypeDefnUnion.members.
 | |
| 		"TypeName", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnLink",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("expectedType", "TypeName", true, false), // todo: this uses an implicit with a value of 'any' in the schema-schema, but that's been questioned before.  maybe it should simply be an optional.
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("UnionRepresentation",
 | |
| 		[]schema.TypeName{
 | |
| 			"UnionRepresentation_Kinded",
 | |
| 			"UnionRepresentation_Keyed",
 | |
| 			"UnionRepresentation_Envelope",
 | |
| 			"UnionRepresentation_Inline",
 | |
| 			"UnionRepresentation_StringPrefix",
 | |
| 			"UnionRepresentation_BytesPrefix",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKeyed(map[string]schema.TypeName{
 | |
| 			"kinded":       "UnionRepresentation_Kinded",
 | |
| 			"keyed":        "UnionRepresentation_Keyed",
 | |
| 			"envelope":     "UnionRepresentation_Envelope",
 | |
| 			"inline":       "UnionRepresentation_Inline",
 | |
| 			"stringprefix": "UnionRepresentation_StringPrefix",
 | |
| 			"byteprefix":   "UnionRepresentation_BytesPrefix",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("UnionRepresentation_Kinded",
 | |
| 		"RepresentationKind", "UnionMember", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("UnionRepresentation_Keyed",
 | |
| 		"String", "UnionMember", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("Map__String__UnionMember",
 | |
| 		"TypeName", "TypeDefn", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("UnionRepresentation_Envelope",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("discriminantKey", "String", false, false),
 | |
| 			schema.SpawnStructField("contentKey", "String", false, false),
 | |
| 			schema.SpawnStructField("discriminantTable", "Map__String__UnionMember", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("UnionRepresentation_Inline",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("discriminantKey", "String", false, false),
 | |
| 			schema.SpawnStructField("discriminantTable", "Map__String__TypeName", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("UnionRepresentation_StringPrefix",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("prefixes", "Map__String__TypeName", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("UnionRepresentation_BytesPrefix",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("prefixes", "Map__HexString__TypeName", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("Map__HexString__TypeName",
 | |
| 		"String", "TypeName", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnString("HexString"))
 | |
| 	ts.Accumulate(schema.SpawnMap("Map__String__TypeName",
 | |
| 		"String", "TypeName", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("Map__TypeName__Int",
 | |
| 		"String", "Int", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnString("RepresentationKind")) // todo: RepresentationKind is supposed to be an enum, but we're puting it to a string atm.
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnStruct",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("fields", "Map__FieldName__StructField", false, false), // todo: dodging inline defn's again.
 | |
| 			schema.SpawnStructField("representation", "StructRepresentation", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("Map__FieldName__StructField",
 | |
| 		"FieldName", "StructField", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnString("FieldName"))
 | |
| 	ts.Accumulate(schema.SpawnStruct("StructField",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("type", "TypeNameOrInlineDefn", false, false),
 | |
| 			schema.SpawnStructField("optional", "Bool", true, false), // todo: wants to use the "implicit" feature, but not supported yet
 | |
| 			schema.SpawnStructField("nullable", "Bool", true, false), // todo: wants to use the "implicit" feature, but not supported yet
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("StructRepresentation",
 | |
| 		[]schema.TypeName{
 | |
| 			"StructRepresentation_Map",
 | |
| 			"StructRepresentation_Tuple",
 | |
| 			"StructRepresentation_Stringpairs",
 | |
| 			"StructRepresentation_Stringjoin",
 | |
| 			"StructRepresentation_Listpairs",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKeyed(map[string]schema.TypeName{
 | |
| 			"map":         "StructRepresentation_Map",
 | |
| 			"tuple":       "StructRepresentation_Tuple",
 | |
| 			"stringpairs": "StructRepresentation_Stringpairs",
 | |
| 			"stringjoin":  "StructRepresentation_Stringjoin",
 | |
| 			"listpairs":   "StructRepresentation_Listpairs",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("StructRepresentation_Map",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("fields", "Map__FieldName__StructRepresentation_Map_FieldDetails", true, false), // todo: dodging inline defn's again.
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("Map__FieldName__StructRepresentation_Map_FieldDetails",
 | |
| 		"FieldName", "StructRepresentation_Map_FieldDetails", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("StructRepresentation_Map_FieldDetails",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("rename", "String", true, false),
 | |
| 			schema.SpawnStructField("implicit", "AnyScalar", true, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("StructRepresentation_Tuple",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("fieldOrder", "List__FieldName", true, false), // todo: dodging inline defn's again.
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnList("List__FieldName",
 | |
| 		"FieldName", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("StructRepresentation_Stringpairs",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("innerDelim", "String", false, false),
 | |
| 			schema.SpawnStructField("entryDelim", "String", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("StructRepresentation_Stringjoin",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("join", "String", false, false),               // review: "delim" would seem more consistent with others -- but this is currently what the schema-schema says.
 | |
| 			schema.SpawnStructField("fieldOrder", "List__FieldName", true, false), // todo: dodging inline defn's again.
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("StructRepresentation_Listpairs",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnEnum",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("members", "List__EnumMember", false, false),
 | |
| 			schema.SpawnStructField("representation", "EnumRepresentation", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("Unit", // todo: we should formalize the introdution of unit as first class type kind.
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnList("List__EnumMember",
 | |
| 		"EnumMember", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnString("EnumMember"))
 | |
| 	ts.Accumulate(schema.SpawnUnion("EnumRepresentation",
 | |
| 		[]schema.TypeName{
 | |
| 			"EnumRepresentation_String",
 | |
| 			"EnumRepresentation_Int",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKeyed(map[string]schema.TypeName{
 | |
| 			"string": "EnumRepresentation_String",
 | |
| 			"int":    "EnumRepresentation_Int",
 | |
| 		}),
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("EnumRepresentation_String",
 | |
| 		"EnumMember", "String", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnMap("EnumRepresentation_Int",
 | |
| 		"EnumMember", "Int", false,
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnUnit",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("representation", "UnitRepresentation", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnString("UnitRepresentation")) // TODO: enum
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnAny",
 | |
| 		[]schema.StructField{},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnStruct("TypeDefnCopy",
 | |
| 		[]schema.StructField{
 | |
| 			schema.SpawnStructField("fromType", "TypeName", false, false),
 | |
| 		},
 | |
| 		schema.StructRepresentation_Map{},
 | |
| 	))
 | |
| 	ts.Accumulate(schema.SpawnUnion("AnyScalar",
 | |
| 		[]schema.TypeName{
 | |
| 			"Bool",
 | |
| 			"String",
 | |
| 			"Bytes",
 | |
| 			"Int",
 | |
| 			"Float",
 | |
| 		},
 | |
| 		schema.SpawnUnionRepresentationKinded(map[datamodel.Kind]schema.TypeName{
 | |
| 			datamodel.Kind_Bool:   "Bool",
 | |
| 			datamodel.Kind_String: "String",
 | |
| 			datamodel.Kind_Bytes:  "Bytes",
 | |
| 			datamodel.Kind_Int:    "Int",
 | |
| 			datamodel.Kind_Float:  "Float",
 | |
| 		}),
 | |
| 	))
 | |
| 
 | |
| 	if errs := ts.ValidateGraph(); errs != nil {
 | |
| 		for _, err := range errs {
 | |
| 			fmt.Printf("- %s\n", err)
 | |
| 		}
 | |
| 		panic("not happening")
 | |
| 	}
 | |
| 
 | |
| 	TypeSystem = ts
 | |
| 
 | |
| 	Prototypes.Schema = bindnode.Prototype(
 | |
| 		(*Schema)(nil),
 | |
| 		TypeSystem.TypeByName("Schema"),
 | |
| 	)
 | |
| }
 |