in packages/LUISGen/src/Typescript.cs [103:183]
static void Entities(dynamic app, Writer w)
{
// Composite instance and data
if (app.composites != null)
{
foreach (var composite in app.composites)
{
var name = Utils.NormalizeName(composite.name);
w.WriteLine();
w.IndentLine($"export interface _Instance{name} {{");
w.Indent();
foreach (var child in composite.children)
{
w.IndentLine($"{PropertyName(child, app)}?: InstanceData[];");
}
w.Outdent();
w.IndentLine("}");
w.IndentLine($"export interface {name} {{");
w.Indent();
foreach (var child in composite.children)
{
WriteEntity(Utils.Entity(child), Utils.IsList(child, app) ? "list" : child, app, w);
}
w.IndentLine($"$instance?: _Instance{name};");
w.Outdent();
w.IndentLine("}");
}
}
w.WriteLine();
// Entity instance
w.IndentLine("export interface _Instance {");
w.Indent();
Utils.WriteInstances((JObject)app, (name) =>
{
w.IndentLine($"{PropertyName(name, app)}?: InstanceData[];");
});
w.Outdent();
w.IndentLine("}");
// Entities
w.WriteLine();
w.IndentLine("export interface _Entities {");
w.Indent();
if (app.entities != null && app.entities.Count > 0)
{
w.IndentLine("// Simple entities");
foreach (var entity in app.entities)
{
WriteEntity(entity, entity.name, app, w);
if (entity?.children != null)
{
// Hierarchical
foreach (var child in entity.children)
{
WriteEntity(Utils.Entity(child), child, app, w);
}
}
}
}
WriteEntities(app.prebuiltEntities, app, "Built-in entities", w);
WriteEntities(app.closedLists, app, "Lists", w);
WriteEntities(app.regex_entities, app, "Regex entities", w);
WriteEntities(app.patternAnyEntities, app, "Pattern.any", w);
// Composites
if (app.composites != null && app.composites.Count > 0)
{
w.WriteLine();
w.IndentLine("// Composites");
foreach (var composite in app.composites)
{
var name = PropertyName(composite.name, app);
w.IndentLine($"{name}?: {name}[];");
}
}
w.IndentLine($"$instance : _Instance;");
w.Outdent();
w.IndentLine("}");
}