Wizzi Glossary
$fragment command
The $fragment command is an ITTF Template Command for declaring an inlined ITTF Fragment.
$include command
The $include command is an ITTF Template Command for including an ITTF Fragment in the node position of the command.
*__copy folders
When mass generating artifacts using a glob pattern, folders having a name ending with __copy are not generated but simply copied as is.
Artifact Generator
An Artifact Generator is a javascript module exported by a Wizzi Plugin that takes as input a Wizzi Model Instance and, optionally, a context object, and writes a software artifact. An Artifact Generation is the main actions of a Wizzi Production.
Included ITTF Fragment
An Included ITTF Fragment is a reusable fragment of an ITTF Document, contained in its own file or inlined, that has been incuded in an includer, without passing of parameters, using an $include command.
ITTF Document
ITTF, Indented Text Tree Format, is a document format for declaring a textual representation of a tree data structure of name-valued nodes. It is the source format of Wizzi Models. It consists of one Primary ITTF Document and, optionally, one or more ITTF Fragments mixed or included.
ITTF Fragment path resolution
Include commands and mix actions declare the path of the ITTF Document that must be mixed or included. At first the path to match is built joining the current folder path of the includer document and the declared path of the included document. If this match fails, then the 't' folder rule is applied, starting from the current folder path and going up on the folder tree. See 't folder'.
Primary ITTF Document
A Primary ITTF Document acts as the starting point for loading an mTree. It's a text file that can contain and combine smaller ITTF Fragments. However, the main root of the Primary ITTF Document might not become the final root node of the mTree after processing. This is because the Primary ITTF Document's root can be a Mix Action that inserts its content beneath another node within a mixed ITTF Fragment.
ITTF Node
An ITTF Node is a node of the tree structure of an ITTF Document. It is a logical line of code that can be broken in many phisical lines with line continuations chars. It is a name value pair of text strings, with children ITTF Nodes, and one parent ITTF Node. The ITTF Root Node has no parent node.
ITTF Node Name
An ITTF Node Name is the name part of an ITTF Node.
ITTF Node Value
An ITTF Node Value is the value part of an ITTF Node.
ITTF Fragment
An ITTF Fragment is a branch ITTF Node that can be included or mixed in an Primary ITTF Document or in another ITTF Fragment. It can be defined in a separate file, and retrieved using the ITTF Document path resolution or can be inlined, using the Template Command $fragment fragment-name , and referenced by name.
ITTF Processing
The ITTF Processing of an ITTF Document is the parsing of the source documents, the resolution of references to ITTF Fragments, their inclusion or mix, the execution of ITTF Template Commands and JsWizzi expressions, and, at the end, the build up of the resulting node structure that will be loaded into an mTree instance.
ITTF Root Node
An ITTF Root Node is the root node of an ITTF Source Unit
ITTF Scan Feature
The ITTF Scan Feature is a Wizzi Feature for keeping tracks and easily retrieve the dependencies of mixed and included ITTF Fragments.
ITTF Source Unit
An ITTF Source Unit is an ITTF Node branch with a name, that can be referenced in a Wizzi Action. Primary ITTF Documents (files) and ITTF Fragments (files or inlined) are the ITTF Source Units of Wizzi. An ITTF Source Unit must have a single ITTF Root Node. You can define an ITTF Fragment with many root nodes using the convenience ITTF Template Command $group as ITTF Root Node.
ITTF Template Command
An ITTF Template Command is an instruction for the ITTF Template Engine. It is an ITTF Node with a name starting with the $ char. It can modify variables in the JsWizzi Evaluation Context or manipulate the node structure of the ITTF Document, merging nodes with context data, including and excluding node branches, etc...
ITTF Template Engine
The ITTF Template Engine is a Wizzi Kernel Feature that manages the template commands and the JsWizzi expressions contained in an ITTF Document.
JsWizzi
JsWizzi is the script engine used by the ITTF Template Engine of Wizzi. It is a sandboxed subset of javascript. Expressions in ITTF Node Values and ITTF Template Commands are written in JsWizzi.
JsWizzi Evaluation Context
The JsWizzi Evaluation Context is the evaluation context of JsWizzi during an ITTF Processing. The properties can be set at various leveles. 1) a global context can be set instantiating a Wizzi Factory Istance; 2) an action context can be set calling the method for the action; 3) Ittf documents can declare global variables (the scope are the fragment of the document) using the $global command; 3) Ittf documents can declare local variables using the $ command.
Language Artifact Generator
A Language Artifact Generator is an Artifact Generator that generate code files written in a Programming Language (PL). For example the js/module and ts/module Artifact Generators of the js and ts plugins.
Language Wizzi Schema
A Language Wizzi Schema is a Wizzi Schema that defines an ITTF Document Type that an artifact generator can transform in a Programming Language (PL) code file.
Meta generation
See `Meta production`
Meta production
A meta production is a data driven creation of a Wizzi Package. The entire folder and file structure of the package can be templated. The result of a meta generation are Ittf Documents.
Mix Action
A Mix Action merges a Mixed ITTF Fragment into a mixer ITTF Document.
Mixed ITTF Fragment
A Mixed ITTF Fragment is a reusable fragment of an ITTF Document, that has ben merged in a mixer document, with passing of parameters, using a Mix Action. The ITTF Nodes of a Mixed ITTF Fragment mantain the JsWizzi Evaluation Context of their original ITTF Source Unit.
Model Transformer
A Model Trasformer is a javascript module exported by a Wizzi Plugin that takes as input a Wizzi Model Instance and, optionally, a context object, and gives as output a modified Wizzi Model Instance or a new POJO object.
mTree
An mTree is the result of the mTree Loading of a ITTF Document. mTrees are tree data structures, in-memory objects that are not persisted. mTrees are verified and loaded into Wizzi Model Instances. A Wizzi Model Loader, optionally, can pre-process an mTree before loading it.
mTree Loader
An mTree loader processes a primary ITTF document and all its associated fragments using ITTF Processing standards. Then, it loads the resulting data structure into an mTree.
mTree Pre-processor
An mTree Pre-processor can modify an mTree after its loading and before its processing by a Wizzi Model Loader. It must be declared in a Wizzi Schema and must be written in the 'lib\wizzi\models' folder of a Wizzi Plugin.
Semantic Ittf Node
A Semantic Ittf Node contains a name value pair that has a meaning in the document type (Wizzi Schema). An mTree contains Semantic Ittf Nodes only. See Template Ittf Node
t folder
Folders named 't' have special rules for the path resolution of mixed and included ITTF Documents. In the folder structure of a Wizzi Package, ITTF Documents contained in a 't' folder, can be referenced with the same rules that apply to NodeJs packages in 'node_modules' folders. They are searched up on the folder tree, until the relative path of the mix or include call is matched or the path resolution fails.
Template Ittf Node
A Template Ittf Node contains instructions for building the mTree Semantic Nodes structure. See Semantic Ittf Node
Virtual Store System
The store system of Wizzi is virtualized. When instantiating a WizziFactory instance you can select the Store Kind. Disk file system is the default. Virtual Store Systems are implemented by the wizzi-repo core package. Available store kinds are: filesystem , mongodb and json .
Wizzi Action
Wizzi Actions are the steps of a Wizzi Production. The main Wizzi Actions are: ITTF Processing , mTree Loading , mTree pre-processing , Wizzi Model Loading , Model Transformation , Artifact Generation . Wizzi Actions are orchestrated by Wizzi Jobs , wizziHub Jobs , or programmatically using the Wizzi API .
Wizzi API
It is an API for executing programmatically the productions of the Wizzi Factory. It is implemented by an instance of the WizziFactory class, exported by the wizzi package.
Wizzi CLI
The Wizzi command line interface (CLI). It is used to perform basic functionality, such as executing a Wizzi Production, creating a new Wizzi Package based on a starter, wizzifying an existing artifact or a folder of artifacts.
Wizzi Core Packages
The Wizzi Core Packages are the wizzi , wizzi-utils , wizzi-mtree , wizzi-repo packages.
Wizzi Core Plugin
The Wizzi Core Plugins are the wizzi-core , wizzi-js , wizzi-web packages.
Wizzi Factory
It is the set of Wizzi features for producing artifacts. Wizzi is a software factory!
Wizzi Factory Instance
A Wizzi Factory Instance is the main object of the Wizzi Platform. Declares the methods for executing almost every Wizzi Action. Most Wizzi Actions have a reference to the current Wizzi Factory Instance in their execution context so that they can require services.
Wizzi Hub
Wizzi Hub is a NodeJS / Express / MongoDb / Typescript application running on the the cloud that can be used for sharing your productions with other developers and calling generation services over the network.
Wizzi Job
The Wizzi Job is the Task Manager of Wizzi. It is implemented as a Wizzi Kernel Schema of type wzjob where you can define Wizzi Productions. A Wizzi Job can be executed using the wizzi command of the Wizzi CLI or, programmatically, using the Wizzi API.
Wizzi Kernel Feature
A feature implemented by a Wizzi Core Package or a Wizzi Core Plugin.
Wizzi Package Production
A Wizzi Package Production is a series of Wizzi Productions for creating a new Wizzi Package. It is executed by the Wizzi CLI after selecting a Wizzi Package Starter.
Wizzi Model DOM
A Wizzi Model DOM is an object model implemented in a javascript module generate from a Wizzi Schema. The Wizzi Model DOM generation is a kernel feature of the \b\ wzschema plugin and the class structure of the DOM is a Wizzi feature. Class methods instead can be user defined.
Wizzi Model Instance
A Wizzi Model Instance is an istance of a Wizzi Model DOM created by a Wizzi Model Loading. It is the main context object used by Wizzi Actions.
Wizzi Model Loading
The Wizzi Model Loading is the action implemented by a Wizzi Model Factory and a Wizzi Model Doms generated from a Wizzi Schema. It creates a Wizzi Model Instance and loads in it an mTree, validates the mTree nodes, instantiates the classes of the DOM and executes the verify and initialize methods. The result is a Wizzi Model Instance ready for use as a context object in others Wizzi Actions.
Wizzi Package
A Wizzi Package is a package that uses Wizzi for generating some, or all, of its artifacts. A standard Wizzi Package contains a .wizzi folder.
Wizzi Platform
The Wizzi Platform is the entire ecosystem of Wizzi. Its main components are the Wizzi Kernel , the Wizzi Plugins , the Wizzi Meta Plugins , the Wizzi CLI , the Wizzi API , Wizzi Studio and Wizzi Hub .
Wizzi Plugin
A Wizzi Plugin implements one or more Wizzi Schemas. For each schema the plugin must implement its Wizzi Model Loader and can implement Artifact Generators, Model Transformers, a Wizzifier and a documentation Cheatsheet. A Wizzi plugin must be a NodeJS package, and must export a Wizzi Plugin Interface.
Wizzi Plugin Interface
A Wizzi Plugin Interface is the interface that a Wizzi Pugin must export in its index file, so that the Wizzi Plugin Manager can retrieve its Loaders, transformers, generators, wizzifiers and cheatsheets.
Wizzi Production
A Wizzi Production is a set of Wizzi Actions for generating one or more software artifacts.
Wizzi Schema
A Wizzi Schemas is the core modeling tool of Wizzi. In it you define an object model of named and typed elements that map the ITTF Nodes of an ITTF Document. A production of the core plugin wzschema transforms a Wizzi Schema into a Wizzi Model DOM, a javascript class that implements the schema object model. Wizzi Model Instances can load and validate mTrees data. Typed elements become classes and you can write methods for filtering and manipulating the loaded data.
Wizzi Store System
A Wizzi Store System implements a Virtual File System for retrieving ITTF Documents. Currently the Wizzi Store Systems are: filesystem and json . The json Virtual file system is a powerful tool for executing productions in the cloud or behind your own http endpoints.
Wizzi Studio
Wizzi Studio is a NodeJS / Express / MongoDb / Typescript application for managing Wizzi Productions that must be run locally accessing the file system of your desktop.
wizzifier
A plugin may implement a wizzifier for its schema. A wizzifier converts an artifact to its ITTF Document source. These core plugins have a wizzifier: css , html , js , json , ts , svg , yaml and xml .
wizzify
To wizzify means to executes a wizzifier . It converts an artifact to its ITTF Document source.