1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
# Schemas
Yjs is untyped. We must know what each attribute contains at build-time and cast its values when accessing them. It is essential to ensure both models use the same schema, to prevent errors at run-time because of a wrong cast. For this purpose, in the following sections, we can find the description of the schema used by each model in case we want to extend them to create a custom model.
## YFile
```typescript
{
/**
* Contains the state of the document.
* At the moment the only mandatory attributes are path and dirty.
*/
"state": YMap<string, any>,
/**
* Contains the content of the document.
*/
"source": YText
}
```
### state:
```typescript
{
/**
* Whether the document is dirty.
*/
"dirty": bool,
/**
* Document's path.
*/
"path": str
}
```
## YNotebook
```typescript
{
/**
* Contains the state of the document.
* At the moment the only mandatory attributes are path and dirty.
*/
"state": YMap<string, any>,
/**
* Contains document's metadata.
*
* Note: Do not confuse it with the notebook's metadata attribute,
* "meta" has `nbformat`, `nbformat_minor`, and `metadata`
*/
"meta": YMap<string, any>,
/**
* The list of YMap that stores the data of each cell.
*/
"cells": YArray<YMap<string, any>>
}
```
### state:
```typescript
{
/**
* Whether the document is dirty.
*/
"dirty": bool,
/**
* Document's path.
*/
"path": str
}
```
### meta:
```typescript
{
/**
* The version of the notebook format supported by the schema.
*/
"nbformat": number,
/**
* The minor version of the notebook format.
*/
"nbformat_minor": number,
/**
* Notebook's metadata.
*/
"metadata": YMap<string, any>
}
```
### cells
```typescript
[
/**
* The following JSON object is actually a YMap that contains
* the described attributes.
*/
{
/**
* Cell's id.
*/
"id": str,
/**
* Cell type.
*/
"cell_type": str,
/**
* The content of the cell (the code).
*/
"source": YText,
/**
* Cell's metadata.
*/
"metadata": YMap<string, any>,
/**
* The execution count.
*/
"execution_count": Int | None,
/**
* Cell's outputs.
*/
"outputs": [] | None,
/**
* Cell's attachments.
*/
"attachments": {} | None
}
]
```
|