{
  "type": "Program",
  "body": [],
  "sourceType": "module",
  "range": [
    6276,
    6276
  ],
  "loc": {
    "start": {
      "line": 166,
      "column": 0
    },
    "end": {
      "line": 166,
      "column": 0
    }
  },
  "leadingComments": [
    {
      "type": "Block",
      "value": "*\n * A container for data that also includes information about the project and schema.\n * @typedef {Object} DataInfo\n * @property {String} projectId      The id of the project\n * @property {String} projectName    The name of the project\n * @property {Number} projectVersion The version of the project\n * @property {String} schemaId       The id of the schema\n * @property {String} schemaName     The name of the schema\n * @property {Object} item           An object containing the data\n ",
      "range": [
        0,
        491
      ],
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 10,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * An object containing actual data, the keys are the column names and the values are depending on the column type.\n * @typedef {Object} Item\n * @property {*} value Test\n ",
      "range": [
        493,
        670
      ],
      "loc": {
        "start": {
          "line": 12,
          "column": 0
        },
        "end": {
          "line": 16,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A project\n * @typedef {Object} Project\n * @property {String} name\n * @property {Number} version\n * @property {Object} schemas         An object of schemas where the key is the unique id for the schema and the value is an object of type Schema\n ",
      "range": [
        672,
        925
      ],
      "loc": {
        "start": {
          "line": 18,
          "column": 0
        },
        "end": {
          "line": 24,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A schema describing the properties of data.\n * @typedef {Object} Schema\n * @property {String} name            The name of the schema\n * @property {String|Array} primary   The id of the column, or an array of ids that indicate as the primary key\n * @property {Object} columns         An object of columns where the key is the unique id for the column and the value is an object of type Column\n ",
      "range": [
        927,
        1329
      ],
      "loc": {
        "start": {
          "line": 26,
          "column": 0
        },
        "end": {
          "line": 32,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A column describing a single property of data.\n * @typedef {Object} Column\n * @property {String} name The name of the column\n * @property {String} type The type of the column\n ",
      "range": [
        1331,
        1516
      ],
      "loc": {
        "start": {
          "line": 34,
          "column": 0
        },
        "end": {
          "line": 39,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a modification to a schema or column.\n * @typedef {Object} Change\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} change A string indicating the type of change,\n * this can be any of:\n *  - project.create\n *  - project.rename\n *  - project.remove\n *  - project.tag\n *  - schema.create\n *  - schema.rename\n *  - schema.remove\n *  - column.create\n *  - column.rename\n *  - column.remove\n *  - column.typechange\n ",
      "range": [
        1518,
        2093
      ],
      "loc": {
        "start": {
          "line": 41,
          "column": 0
        },
        "end": {
          "line": 59,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * An array of changes containing items of type Change\n * @typedef {Array} Changes\n ",
      "range": [
        2095,
        2185
      ],
      "loc": {
        "start": {
          "line": 61,
          "column": 0
        },
        "end": {
          "line": 64,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a project has been created\n * @typedef {Object} ProjectCreateChange\n * @property {String} projectId The id of the project that has been created\n * @property {Project} project The project that has been created\n ",
      "range": [
        2187,
        2426
      ],
      "loc": {
        "start": {
          "line": 66,
          "column": 0
        },
        "end": {
          "line": 71,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a project has been removed\n * @typedef {Object} ProjectRemoveChange\n * @property {String} projectId The id of the project that has been removed\n * @property {Project} oldProject The project that has been removed\n ",
      "range": [
        2428,
        2670
      ],
      "loc": {
        "start": {
          "line": 73,
          "column": 0
        },
        "end": {
          "line": 78,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a project has been renamed\n * @typedef {Object} ProjectRenameChange\n * @property {String} projectId The id of the project that has been renamed\n * @property {String} name The new name for the project\n * @property {String} oldName The old name for the project\n ",
      "range": [
        2672,
        2961
      ],
      "loc": {
        "start": {
          "line": 80,
          "column": 0
        },
        "end": {
          "line": 86,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a project has been tagged\n * @typedef {Object} ProjectTagChange\n * @property {String} projectId The id of the project that has been tagged\n * @property {String} version The new version for the project\n * @property {String} oldVersion The old version of the project\n ",
      "range": [
        2963,
        3258
      ],
      "loc": {
        "start": {
          "line": 88,
          "column": 0
        },
        "end": {
          "line": 94,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a schema has been created.\n * @typedef {Object} SchemaCreateChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that has been created\n * @property {Schema} schema The schema that has been created\n ",
      "range": [
        3260,
        3575
      ],
      "loc": {
        "start": {
          "line": 96,
          "column": 0
        },
        "end": {
          "line": 102,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a schema has been removed.\n * @typedef {Object} SchemaRemoveChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that has been removed\n * @property {Schema} oldSchema The schema that has been removed\n ",
      "range": [
        3577,
        3895
      ],
      "loc": {
        "start": {
          "line": 104,
          "column": 0
        },
        "end": {
          "line": 110,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a schema has been renamed.\n * @typedef {Object} SchemaRenameChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that has been renamed\n * @property {String} name The new name of the column\n * @property {String} oldName The old name of the column\n ",
      "range": [
        3897,
        4261
      ],
      "loc": {
        "start": {
          "line": 112,
          "column": 0
        },
        "end": {
          "line": 119,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a column has been created.\n * @typedef {Object} ColumnCreateChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} columnId The id of the column that has been created\n * @property {Schema} column The column that has been created\n ",
      "range": [
        4263,
        4658
      ],
      "loc": {
        "start": {
          "line": 121,
          "column": 0
        },
        "end": {
          "line": 128,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a column has been removed.\n * @typedef {Object} ColumnRemoveChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} columnId The id of the column that has been removed\n * @property {Column} oldColumn The column that has been removed\n ",
      "range": [
        4660,
        5058
      ],
      "loc": {
        "start": {
          "line": 130,
          "column": 0
        },
        "end": {
          "line": 137,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a column has been renamed.\n * @typedef {Object} ColumnRenameChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} columnId The id of the column that has been renamed\n * @property {String} name The new name of the column\n * @property {String} oldName The old name of the column\n ",
      "range": [
        5060,
        5504
      ],
      "loc": {
        "start": {
          "line": 139,
          "column": 0
        },
        "end": {
          "line": 147,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating the type of a column has changed.\n * @typedef {Object} ColumnTypechangeChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} columnId The id of the column that has changed\n * @property {String} columnName The name of the the column that has changed\n * @property {String} type The new type of the column\n * @property {String} oldType The old type of the column\n ",
      "range": [
        5506,
        6033
      ],
      "loc": {
        "start": {
          "line": 149,
          "column": 0
        },
        "end": {
          "line": 158,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A result of the validation containing errors when failed.\n * @typedef {Object} ValidationResult\n * @property {Boolean} success Whether the validation was successfull or not\n * @property {Array} errors    An array of error objects\n ",
      "range": [
        6035,
        6275
      ],
      "loc": {
        "start": {
          "line": 160,
          "column": 0
        },
        "end": {
          "line": 165,
          "column": 3
        }
      }
    }
  ],
  "comments": [
    {
      "type": "Block",
      "value": "*\n * A container for data that also includes information about the project and schema.\n * @typedef {Object} DataInfo\n * @property {String} projectId      The id of the project\n * @property {String} projectName    The name of the project\n * @property {Number} projectVersion The version of the project\n * @property {String} schemaId       The id of the schema\n * @property {String} schemaName     The name of the schema\n * @property {Object} item           An object containing the data\n ",
      "range": [
        0,
        491
      ],
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 10,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * An object containing actual data, the keys are the column names and the values are depending on the column type.\n * @typedef {Object} Item\n * @property {*} value Test\n ",
      "range": [
        493,
        670
      ],
      "loc": {
        "start": {
          "line": 12,
          "column": 0
        },
        "end": {
          "line": 16,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A project\n * @typedef {Object} Project\n * @property {String} name\n * @property {Number} version\n * @property {Object} schemas         An object of schemas where the key is the unique id for the schema and the value is an object of type Schema\n ",
      "range": [
        672,
        925
      ],
      "loc": {
        "start": {
          "line": 18,
          "column": 0
        },
        "end": {
          "line": 24,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A schema describing the properties of data.\n * @typedef {Object} Schema\n * @property {String} name            The name of the schema\n * @property {String|Array} primary   The id of the column, or an array of ids that indicate as the primary key\n * @property {Object} columns         An object of columns where the key is the unique id for the column and the value is an object of type Column\n ",
      "range": [
        927,
        1329
      ],
      "loc": {
        "start": {
          "line": 26,
          "column": 0
        },
        "end": {
          "line": 32,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A column describing a single property of data.\n * @typedef {Object} Column\n * @property {String} name The name of the column\n * @property {String} type The type of the column\n ",
      "range": [
        1331,
        1516
      ],
      "loc": {
        "start": {
          "line": 34,
          "column": 0
        },
        "end": {
          "line": 39,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a modification to a schema or column.\n * @typedef {Object} Change\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} change A string indicating the type of change,\n * this can be any of:\n *  - project.create\n *  - project.rename\n *  - project.remove\n *  - project.tag\n *  - schema.create\n *  - schema.rename\n *  - schema.remove\n *  - column.create\n *  - column.rename\n *  - column.remove\n *  - column.typechange\n ",
      "range": [
        1518,
        2093
      ],
      "loc": {
        "start": {
          "line": 41,
          "column": 0
        },
        "end": {
          "line": 59,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * An array of changes containing items of type Change\n * @typedef {Array} Changes\n ",
      "range": [
        2095,
        2185
      ],
      "loc": {
        "start": {
          "line": 61,
          "column": 0
        },
        "end": {
          "line": 64,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a project has been created\n * @typedef {Object} ProjectCreateChange\n * @property {String} projectId The id of the project that has been created\n * @property {Project} project The project that has been created\n ",
      "range": [
        2187,
        2426
      ],
      "loc": {
        "start": {
          "line": 66,
          "column": 0
        },
        "end": {
          "line": 71,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a project has been removed\n * @typedef {Object} ProjectRemoveChange\n * @property {String} projectId The id of the project that has been removed\n * @property {Project} oldProject The project that has been removed\n ",
      "range": [
        2428,
        2670
      ],
      "loc": {
        "start": {
          "line": 73,
          "column": 0
        },
        "end": {
          "line": 78,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a project has been renamed\n * @typedef {Object} ProjectRenameChange\n * @property {String} projectId The id of the project that has been renamed\n * @property {String} name The new name for the project\n * @property {String} oldName The old name for the project\n ",
      "range": [
        2672,
        2961
      ],
      "loc": {
        "start": {
          "line": 80,
          "column": 0
        },
        "end": {
          "line": 86,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a project has been tagged\n * @typedef {Object} ProjectTagChange\n * @property {String} projectId The id of the project that has been tagged\n * @property {String} version The new version for the project\n * @property {String} oldVersion The old version of the project\n ",
      "range": [
        2963,
        3258
      ],
      "loc": {
        "start": {
          "line": 88,
          "column": 0
        },
        "end": {
          "line": 94,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a schema has been created.\n * @typedef {Object} SchemaCreateChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that has been created\n * @property {Schema} schema The schema that has been created\n ",
      "range": [
        3260,
        3575
      ],
      "loc": {
        "start": {
          "line": 96,
          "column": 0
        },
        "end": {
          "line": 102,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a schema has been removed.\n * @typedef {Object} SchemaRemoveChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that has been removed\n * @property {Schema} oldSchema The schema that has been removed\n ",
      "range": [
        3577,
        3895
      ],
      "loc": {
        "start": {
          "line": 104,
          "column": 0
        },
        "end": {
          "line": 110,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a schema has been renamed.\n * @typedef {Object} SchemaRenameChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that has been renamed\n * @property {String} name The new name of the column\n * @property {String} oldName The old name of the column\n ",
      "range": [
        3897,
        4261
      ],
      "loc": {
        "start": {
          "line": 112,
          "column": 0
        },
        "end": {
          "line": 119,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a column has been created.\n * @typedef {Object} ColumnCreateChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} columnId The id of the column that has been created\n * @property {Schema} column The column that has been created\n ",
      "range": [
        4263,
        4658
      ],
      "loc": {
        "start": {
          "line": 121,
          "column": 0
        },
        "end": {
          "line": 128,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a column has been removed.\n * @typedef {Object} ColumnRemoveChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} columnId The id of the column that has been removed\n * @property {Column} oldColumn The column that has been removed\n ",
      "range": [
        4660,
        5058
      ],
      "loc": {
        "start": {
          "line": 130,
          "column": 0
        },
        "end": {
          "line": 137,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating a column has been renamed.\n * @typedef {Object} ColumnRenameChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} columnId The id of the column that has been renamed\n * @property {String} name The new name of the column\n * @property {String} oldName The old name of the column\n ",
      "range": [
        5060,
        5504
      ],
      "loc": {
        "start": {
          "line": 139,
          "column": 0
        },
        "end": {
          "line": 147,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A change indicating the type of a column has changed.\n * @typedef {Object} ColumnTypechangeChange\n * @property {String} projectId The id of the project that this change applies to\n * @property {String} schemaId The id of the schema that this change applies to\n * @property {String} columnId The id of the column that has changed\n * @property {String} columnName The name of the the column that has changed\n * @property {String} type The new type of the column\n * @property {String} oldType The old type of the column\n ",
      "range": [
        5506,
        6033
      ],
      "loc": {
        "start": {
          "line": 149,
          "column": 0
        },
        "end": {
          "line": 158,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * A result of the validation containing errors when failed.\n * @typedef {Object} ValidationResult\n * @property {Boolean} success Whether the validation was successfull or not\n * @property {Array} errors    An array of error objects\n ",
      "range": [
        6035,
        6275
      ],
      "loc": {
        "start": {
          "line": 160,
          "column": 0
        },
        "end": {
          "line": 165,
          "column": 3
        }
      }
    }
  ]
}