@abraca/schema 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abracadabra-schema.cjs +853 -0
- package/dist/abracadabra-schema.cjs.map +1 -0
- package/dist/abracadabra-schema.esm.js +781 -0
- package/dist/abracadabra-schema.esm.js.map +1 -0
- package/dist/index.d.ts +2538 -0
- package/package.json +41 -0
- package/src/crdt.ts +63 -0
- package/src/generated/calendar.ts +35 -0
- package/src/generated/chart.ts +35 -0
- package/src/generated/checklist.ts +35 -0
- package/src/generated/dashboard.ts +35 -0
- package/src/generated/doc.ts +35 -0
- package/src/generated/gallery.ts +35 -0
- package/src/generated/graph.ts +35 -0
- package/src/generated/json-schema/calendar.json +140 -0
- package/src/generated/json-schema/chart.json +164 -0
- package/src/generated/json-schema/checklist.json +138 -0
- package/src/generated/json-schema/dashboard.json +122 -0
- package/src/generated/json-schema/doc.json +122 -0
- package/src/generated/json-schema/gallery.json +157 -0
- package/src/generated/json-schema/graph.json +125 -0
- package/src/generated/json-schema/kanban.json +145 -0
- package/src/generated/json-schema/map.json +125 -0
- package/src/generated/json-schema/outline.json +122 -0
- package/src/generated/json-schema/overview.json +122 -0
- package/src/generated/json-schema/plugin-manifest.json +221 -0
- package/src/generated/json-schema/prose.json +122 -0
- package/src/generated/json-schema/sheets.json +135 -0
- package/src/generated/json-schema/slides.json +129 -0
- package/src/generated/json-schema/table.json +136 -0
- package/src/generated/json-schema/timeline.json +122 -0
- package/src/generated/kanban.ts +35 -0
- package/src/generated/map.ts +35 -0
- package/src/generated/markdown/calendar.md +59 -0
- package/src/generated/markdown/chart.md +62 -0
- package/src/generated/markdown/checklist.md +58 -0
- package/src/generated/markdown/dashboard.md +56 -0
- package/src/generated/markdown/doc.md +56 -0
- package/src/generated/markdown/gallery.md +61 -0
- package/src/generated/markdown/graph.md +57 -0
- package/src/generated/markdown/kanban.md +62 -0
- package/src/generated/markdown/map.md +57 -0
- package/src/generated/markdown/outline.md +56 -0
- package/src/generated/markdown/overview.md +56 -0
- package/src/generated/markdown/prose.md +56 -0
- package/src/generated/markdown/sheets.md +59 -0
- package/src/generated/markdown/slides.md +57 -0
- package/src/generated/markdown/table.md +58 -0
- package/src/generated/markdown/timeline.md +56 -0
- package/src/generated/outline.ts +35 -0
- package/src/generated/overview.ts +35 -0
- package/src/generated/prose.ts +35 -0
- package/src/generated/rust/calendar.rs +125 -0
- package/src/generated/rust/chart.rs +151 -0
- package/src/generated/rust/checklist.rs +123 -0
- package/src/generated/rust/dashboard.rs +101 -0
- package/src/generated/rust/doc.rs +101 -0
- package/src/generated/rust/gallery.rs +146 -0
- package/src/generated/rust/graph.rs +104 -0
- package/src/generated/rust/kanban.rs +127 -0
- package/src/generated/rust/map.rs +104 -0
- package/src/generated/rust/outline.rs +101 -0
- package/src/generated/rust/overview.rs +101 -0
- package/src/generated/rust/prose.rs +101 -0
- package/src/generated/rust/sheets.rs +110 -0
- package/src/generated/rust/slides.rs +111 -0
- package/src/generated/rust/table.rs +121 -0
- package/src/generated/rust/timeline.rs +101 -0
- package/src/generated/sheets.ts +35 -0
- package/src/generated/slides.ts +35 -0
- package/src/generated/table.ts +35 -0
- package/src/generated/timeline.ts +35 -0
- package/src/index.ts +389 -0
- package/src/manifest/plugin-manifest.ts +212 -0
- package/src/query.ts +150 -0
- package/src/types/calendar.ts +23 -0
- package/src/types/chart.ts +36 -0
- package/src/types/checklist.ts +22 -0
- package/src/types/dashboard.ts +18 -0
- package/src/types/doc.ts +19 -0
- package/src/types/gallery.ts +24 -0
- package/src/types/graph.ts +21 -0
- package/src/types/kanban.ts +27 -0
- package/src/types/map.ts +21 -0
- package/src/types/outline.ts +17 -0
- package/src/types/overview.ts +17 -0
- package/src/types/prose.ts +19 -0
- package/src/types/sheets.ts +24 -0
- package/src/types/slides.ts +22 -0
- package/src/types/table.ts +22 -0
- package/src/types/timeline.ts +18 -0
- package/src/types/universal.ts +59 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
//! AUTO-GENERATED by @abraca/schema (overview).
|
|
2
|
+
//!
|
|
3
|
+
//! Source: `abracadabra-ts/packages/schema/src/generated/json-schema/overview.json`.
|
|
4
|
+
//! Run `pnpm schema:gen` from the abracadabra-ts repo to regenerate.
|
|
5
|
+
//! Do not edit by hand — CI verifies that this file matches the generator output.
|
|
6
|
+
|
|
7
|
+
#![allow(clippy::all)]
|
|
8
|
+
#![allow(dead_code)]
|
|
9
|
+
|
|
10
|
+
use serde::{Deserialize, Serialize};
|
|
11
|
+
|
|
12
|
+
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
13
|
+
#[serde(deny_unknown_fields)]
|
|
14
|
+
pub struct OverviewMeta {
|
|
15
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
16
|
+
pub color: Option<String>,
|
|
17
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
18
|
+
pub icon: Option<String>,
|
|
19
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
20
|
+
#[serde(rename = "datetimeStart")]
|
|
21
|
+
pub datetime_start: Option<String>,
|
|
22
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
23
|
+
#[serde(rename = "datetimeEnd")]
|
|
24
|
+
pub datetime_end: Option<String>,
|
|
25
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
26
|
+
#[serde(rename = "allDay")]
|
|
27
|
+
pub all_day: Option<bool>,
|
|
28
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
29
|
+
#[serde(rename = "dateStart")]
|
|
30
|
+
pub date_start: Option<String>,
|
|
31
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
32
|
+
#[serde(rename = "dateEnd")]
|
|
33
|
+
pub date_end: Option<String>,
|
|
34
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
35
|
+
#[serde(rename = "timeStart")]
|
|
36
|
+
pub time_start: Option<String>,
|
|
37
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
38
|
+
#[serde(rename = "timeEnd")]
|
|
39
|
+
pub time_end: Option<String>,
|
|
40
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
41
|
+
pub tags: Option<Vec<String>>,
|
|
42
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
43
|
+
pub checked: Option<bool>,
|
|
44
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
45
|
+
pub priority: Option<i64>,
|
|
46
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
47
|
+
pub status: Option<String>,
|
|
48
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
49
|
+
pub rating: Option<f64>,
|
|
50
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
51
|
+
pub url: Option<String>,
|
|
52
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
53
|
+
pub email: Option<String>,
|
|
54
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
55
|
+
pub phone: Option<String>,
|
|
56
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
57
|
+
pub number: Option<f64>,
|
|
58
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
59
|
+
pub unit: Option<String>,
|
|
60
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
61
|
+
pub subtitle: Option<String>,
|
|
62
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
63
|
+
pub note: Option<String>,
|
|
64
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
65
|
+
#[serde(rename = "taskProgress")]
|
|
66
|
+
pub task_progress: Option<f64>,
|
|
67
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
68
|
+
#[serde(rename = "assignedTo")]
|
|
69
|
+
pub assigned_to: Option<String>,
|
|
70
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
71
|
+
#[serde(rename = "coverUploadId")]
|
|
72
|
+
pub cover_upload_id: Option<String>,
|
|
73
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
74
|
+
#[serde(rename = "coverDocId")]
|
|
75
|
+
pub cover_doc_id: Option<String>,
|
|
76
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
77
|
+
#[serde(rename = "coverMimeType")]
|
|
78
|
+
pub cover_mime_type: Option<String>,
|
|
79
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
80
|
+
#[serde(rename = "__schemaVersion")]
|
|
81
|
+
pub _schema_version: Option<i64>,
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
85
|
+
#[serde(rename_all = "kebab-case")]
|
|
86
|
+
pub enum DocTypeName {
|
|
87
|
+
Overview,
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
91
|
+
#[serde(rename_all = "lowercase")]
|
|
92
|
+
pub enum BodyKind {
|
|
93
|
+
Ytext,
|
|
94
|
+
Yarray,
|
|
95
|
+
Ymap,
|
|
96
|
+
None,
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
pub const REGISTRY: &[(DocTypeName, u32, BodyKind, &[DocTypeName])] = &[
|
|
100
|
+
(DocTypeName::Overview, 1u32, BodyKind::None, &[]),
|
|
101
|
+
];
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
//! AUTO-GENERATED by @abraca/schema (prose).
|
|
2
|
+
//!
|
|
3
|
+
//! Source: `abracadabra-ts/packages/schema/src/generated/json-schema/prose.json`.
|
|
4
|
+
//! Run `pnpm schema:gen` from the abracadabra-ts repo to regenerate.
|
|
5
|
+
//! Do not edit by hand — CI verifies that this file matches the generator output.
|
|
6
|
+
|
|
7
|
+
#![allow(clippy::all)]
|
|
8
|
+
#![allow(dead_code)]
|
|
9
|
+
|
|
10
|
+
use serde::{Deserialize, Serialize};
|
|
11
|
+
|
|
12
|
+
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
13
|
+
#[serde(deny_unknown_fields)]
|
|
14
|
+
pub struct ProseMeta {
|
|
15
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
16
|
+
pub color: Option<String>,
|
|
17
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
18
|
+
pub icon: Option<String>,
|
|
19
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
20
|
+
#[serde(rename = "datetimeStart")]
|
|
21
|
+
pub datetime_start: Option<String>,
|
|
22
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
23
|
+
#[serde(rename = "datetimeEnd")]
|
|
24
|
+
pub datetime_end: Option<String>,
|
|
25
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
26
|
+
#[serde(rename = "allDay")]
|
|
27
|
+
pub all_day: Option<bool>,
|
|
28
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
29
|
+
#[serde(rename = "dateStart")]
|
|
30
|
+
pub date_start: Option<String>,
|
|
31
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
32
|
+
#[serde(rename = "dateEnd")]
|
|
33
|
+
pub date_end: Option<String>,
|
|
34
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
35
|
+
#[serde(rename = "timeStart")]
|
|
36
|
+
pub time_start: Option<String>,
|
|
37
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
38
|
+
#[serde(rename = "timeEnd")]
|
|
39
|
+
pub time_end: Option<String>,
|
|
40
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
41
|
+
pub tags: Option<Vec<String>>,
|
|
42
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
43
|
+
pub checked: Option<bool>,
|
|
44
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
45
|
+
pub priority: Option<i64>,
|
|
46
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
47
|
+
pub status: Option<String>,
|
|
48
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
49
|
+
pub rating: Option<f64>,
|
|
50
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
51
|
+
pub url: Option<String>,
|
|
52
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
53
|
+
pub email: Option<String>,
|
|
54
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
55
|
+
pub phone: Option<String>,
|
|
56
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
57
|
+
pub number: Option<f64>,
|
|
58
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
59
|
+
pub unit: Option<String>,
|
|
60
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
61
|
+
pub subtitle: Option<String>,
|
|
62
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
63
|
+
pub note: Option<String>,
|
|
64
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
65
|
+
#[serde(rename = "taskProgress")]
|
|
66
|
+
pub task_progress: Option<f64>,
|
|
67
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
68
|
+
#[serde(rename = "assignedTo")]
|
|
69
|
+
pub assigned_to: Option<String>,
|
|
70
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
71
|
+
#[serde(rename = "coverUploadId")]
|
|
72
|
+
pub cover_upload_id: Option<String>,
|
|
73
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
74
|
+
#[serde(rename = "coverDocId")]
|
|
75
|
+
pub cover_doc_id: Option<String>,
|
|
76
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
77
|
+
#[serde(rename = "coverMimeType")]
|
|
78
|
+
pub cover_mime_type: Option<String>,
|
|
79
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
80
|
+
#[serde(rename = "__schemaVersion")]
|
|
81
|
+
pub _schema_version: Option<i64>,
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
85
|
+
#[serde(rename_all = "kebab-case")]
|
|
86
|
+
pub enum DocTypeName {
|
|
87
|
+
Prose,
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
91
|
+
#[serde(rename_all = "lowercase")]
|
|
92
|
+
pub enum BodyKind {
|
|
93
|
+
Ytext,
|
|
94
|
+
Yarray,
|
|
95
|
+
Ymap,
|
|
96
|
+
None,
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
pub const REGISTRY: &[(DocTypeName, u32, BodyKind, &[DocTypeName])] = &[
|
|
100
|
+
(DocTypeName::Prose, 1u32, BodyKind::Ytext, &[]),
|
|
101
|
+
];
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
//! AUTO-GENERATED by @abraca/schema (sheets).
|
|
2
|
+
//!
|
|
3
|
+
//! Source: `abracadabra-ts/packages/schema/src/generated/json-schema/sheets.json`.
|
|
4
|
+
//! Run `pnpm schema:gen` from the abracadabra-ts repo to regenerate.
|
|
5
|
+
//! Do not edit by hand — CI verifies that this file matches the generator output.
|
|
6
|
+
|
|
7
|
+
#![allow(clippy::all)]
|
|
8
|
+
#![allow(dead_code)]
|
|
9
|
+
|
|
10
|
+
use serde::{Deserialize, Serialize};
|
|
11
|
+
|
|
12
|
+
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
13
|
+
#[serde(deny_unknown_fields)]
|
|
14
|
+
pub struct SheetsMeta {
|
|
15
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
16
|
+
pub color: Option<String>,
|
|
17
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
18
|
+
pub icon: Option<String>,
|
|
19
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
20
|
+
#[serde(rename = "datetimeStart")]
|
|
21
|
+
pub datetime_start: Option<String>,
|
|
22
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
23
|
+
#[serde(rename = "datetimeEnd")]
|
|
24
|
+
pub datetime_end: Option<String>,
|
|
25
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
26
|
+
#[serde(rename = "allDay")]
|
|
27
|
+
pub all_day: Option<bool>,
|
|
28
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
29
|
+
#[serde(rename = "dateStart")]
|
|
30
|
+
pub date_start: Option<String>,
|
|
31
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
32
|
+
#[serde(rename = "dateEnd")]
|
|
33
|
+
pub date_end: Option<String>,
|
|
34
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
35
|
+
#[serde(rename = "timeStart")]
|
|
36
|
+
pub time_start: Option<String>,
|
|
37
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
38
|
+
#[serde(rename = "timeEnd")]
|
|
39
|
+
pub time_end: Option<String>,
|
|
40
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
41
|
+
pub tags: Option<Vec<String>>,
|
|
42
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
43
|
+
pub checked: Option<bool>,
|
|
44
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
45
|
+
pub priority: Option<i64>,
|
|
46
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
47
|
+
pub status: Option<String>,
|
|
48
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
49
|
+
pub rating: Option<f64>,
|
|
50
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
51
|
+
pub url: Option<String>,
|
|
52
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
53
|
+
pub email: Option<String>,
|
|
54
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
55
|
+
pub phone: Option<String>,
|
|
56
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
57
|
+
pub number: Option<f64>,
|
|
58
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
59
|
+
pub unit: Option<String>,
|
|
60
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
61
|
+
pub subtitle: Option<String>,
|
|
62
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
63
|
+
pub note: Option<String>,
|
|
64
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
65
|
+
#[serde(rename = "taskProgress")]
|
|
66
|
+
pub task_progress: Option<f64>,
|
|
67
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
68
|
+
#[serde(rename = "assignedTo")]
|
|
69
|
+
pub assigned_to: Option<String>,
|
|
70
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
71
|
+
#[serde(rename = "coverUploadId")]
|
|
72
|
+
pub cover_upload_id: Option<String>,
|
|
73
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
74
|
+
#[serde(rename = "coverDocId")]
|
|
75
|
+
pub cover_doc_id: Option<String>,
|
|
76
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
77
|
+
#[serde(rename = "coverMimeType")]
|
|
78
|
+
pub cover_mime_type: Option<String>,
|
|
79
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
80
|
+
#[serde(rename = "__schemaVersion")]
|
|
81
|
+
pub _schema_version: Option<i64>,
|
|
82
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
83
|
+
#[serde(rename = "sheetsDefaultColWidth")]
|
|
84
|
+
pub sheets_default_col_width: Option<f64>,
|
|
85
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
86
|
+
#[serde(rename = "sheetsDefaultRowHeight")]
|
|
87
|
+
pub sheets_default_row_height: Option<f64>,
|
|
88
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
89
|
+
#[serde(rename = "sheetsShowGridlines")]
|
|
90
|
+
pub sheets_show_gridlines: Option<bool>,
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
94
|
+
#[serde(rename_all = "kebab-case")]
|
|
95
|
+
pub enum DocTypeName {
|
|
96
|
+
Sheets,
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
100
|
+
#[serde(rename_all = "lowercase")]
|
|
101
|
+
pub enum BodyKind {
|
|
102
|
+
Ytext,
|
|
103
|
+
Yarray,
|
|
104
|
+
Ymap,
|
|
105
|
+
None,
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
pub const REGISTRY: &[(DocTypeName, u32, BodyKind, &[DocTypeName])] = &[
|
|
109
|
+
(DocTypeName::Sheets, 1u32, BodyKind::None, &[]),
|
|
110
|
+
];
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
//! AUTO-GENERATED by @abraca/schema (slides).
|
|
2
|
+
//!
|
|
3
|
+
//! Source: `abracadabra-ts/packages/schema/src/generated/json-schema/slides.json`.
|
|
4
|
+
//! Run `pnpm schema:gen` from the abracadabra-ts repo to regenerate.
|
|
5
|
+
//! Do not edit by hand — CI verifies that this file matches the generator output.
|
|
6
|
+
|
|
7
|
+
#![allow(clippy::all)]
|
|
8
|
+
#![allow(dead_code)]
|
|
9
|
+
|
|
10
|
+
use serde::{Deserialize, Serialize};
|
|
11
|
+
|
|
12
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
13
|
+
#[serde(rename_all = "lowercase")]
|
|
14
|
+
pub enum SlidesSlidesTheme {
|
|
15
|
+
Dark,
|
|
16
|
+
Light,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
20
|
+
#[serde(deny_unknown_fields)]
|
|
21
|
+
pub struct SlidesMeta {
|
|
22
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
23
|
+
pub color: Option<String>,
|
|
24
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
25
|
+
pub icon: Option<String>,
|
|
26
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
27
|
+
#[serde(rename = "datetimeStart")]
|
|
28
|
+
pub datetime_start: Option<String>,
|
|
29
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
30
|
+
#[serde(rename = "datetimeEnd")]
|
|
31
|
+
pub datetime_end: Option<String>,
|
|
32
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
33
|
+
#[serde(rename = "allDay")]
|
|
34
|
+
pub all_day: Option<bool>,
|
|
35
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
36
|
+
#[serde(rename = "dateStart")]
|
|
37
|
+
pub date_start: Option<String>,
|
|
38
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
39
|
+
#[serde(rename = "dateEnd")]
|
|
40
|
+
pub date_end: Option<String>,
|
|
41
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
42
|
+
#[serde(rename = "timeStart")]
|
|
43
|
+
pub time_start: Option<String>,
|
|
44
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
45
|
+
#[serde(rename = "timeEnd")]
|
|
46
|
+
pub time_end: Option<String>,
|
|
47
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
48
|
+
pub tags: Option<Vec<String>>,
|
|
49
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
50
|
+
pub checked: Option<bool>,
|
|
51
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
52
|
+
pub priority: Option<i64>,
|
|
53
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
54
|
+
pub status: Option<String>,
|
|
55
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
56
|
+
pub rating: Option<f64>,
|
|
57
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
58
|
+
pub url: Option<String>,
|
|
59
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
60
|
+
pub email: Option<String>,
|
|
61
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
62
|
+
pub phone: Option<String>,
|
|
63
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
64
|
+
pub number: Option<f64>,
|
|
65
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
66
|
+
pub unit: Option<String>,
|
|
67
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
68
|
+
pub subtitle: Option<String>,
|
|
69
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
70
|
+
pub note: Option<String>,
|
|
71
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
72
|
+
#[serde(rename = "taskProgress")]
|
|
73
|
+
pub task_progress: Option<f64>,
|
|
74
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
75
|
+
#[serde(rename = "assignedTo")]
|
|
76
|
+
pub assigned_to: Option<String>,
|
|
77
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
78
|
+
#[serde(rename = "coverUploadId")]
|
|
79
|
+
pub cover_upload_id: Option<String>,
|
|
80
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
81
|
+
#[serde(rename = "coverDocId")]
|
|
82
|
+
pub cover_doc_id: Option<String>,
|
|
83
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
84
|
+
#[serde(rename = "coverMimeType")]
|
|
85
|
+
pub cover_mime_type: Option<String>,
|
|
86
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
87
|
+
#[serde(rename = "__schemaVersion")]
|
|
88
|
+
pub _schema_version: Option<i64>,
|
|
89
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
90
|
+
#[serde(rename = "slidesTheme")]
|
|
91
|
+
pub slides_theme: Option<SlidesSlidesTheme>,
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
95
|
+
#[serde(rename_all = "kebab-case")]
|
|
96
|
+
pub enum DocTypeName {
|
|
97
|
+
Slides,
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
101
|
+
#[serde(rename_all = "lowercase")]
|
|
102
|
+
pub enum BodyKind {
|
|
103
|
+
Ytext,
|
|
104
|
+
Yarray,
|
|
105
|
+
Ymap,
|
|
106
|
+
None,
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
pub const REGISTRY: &[(DocTypeName, u32, BodyKind, &[DocTypeName])] = &[
|
|
110
|
+
(DocTypeName::Slides, 1u32, BodyKind::None, &[]),
|
|
111
|
+
];
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
//! AUTO-GENERATED by @abraca/schema (table).
|
|
2
|
+
//!
|
|
3
|
+
//! Source: `abracadabra-ts/packages/schema/src/generated/json-schema/table.json`.
|
|
4
|
+
//! Run `pnpm schema:gen` from the abracadabra-ts repo to regenerate.
|
|
5
|
+
//! Do not edit by hand — CI verifies that this file matches the generator output.
|
|
6
|
+
|
|
7
|
+
#![allow(clippy::all)]
|
|
8
|
+
#![allow(dead_code)]
|
|
9
|
+
|
|
10
|
+
use serde::{Deserialize, Serialize};
|
|
11
|
+
|
|
12
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
13
|
+
#[serde(rename_all = "lowercase")]
|
|
14
|
+
pub enum TableTableMode {
|
|
15
|
+
Hierarchy,
|
|
16
|
+
Flat,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
20
|
+
#[serde(rename_all = "lowercase")]
|
|
21
|
+
pub enum TableTableSortDir {
|
|
22
|
+
Asc,
|
|
23
|
+
Desc,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
27
|
+
#[serde(deny_unknown_fields)]
|
|
28
|
+
pub struct TableMeta {
|
|
29
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
30
|
+
pub color: Option<String>,
|
|
31
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
32
|
+
pub icon: Option<String>,
|
|
33
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
34
|
+
#[serde(rename = "datetimeStart")]
|
|
35
|
+
pub datetime_start: Option<String>,
|
|
36
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
37
|
+
#[serde(rename = "datetimeEnd")]
|
|
38
|
+
pub datetime_end: Option<String>,
|
|
39
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
40
|
+
#[serde(rename = "allDay")]
|
|
41
|
+
pub all_day: Option<bool>,
|
|
42
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
43
|
+
#[serde(rename = "dateStart")]
|
|
44
|
+
pub date_start: Option<String>,
|
|
45
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
46
|
+
#[serde(rename = "dateEnd")]
|
|
47
|
+
pub date_end: Option<String>,
|
|
48
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
49
|
+
#[serde(rename = "timeStart")]
|
|
50
|
+
pub time_start: Option<String>,
|
|
51
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
52
|
+
#[serde(rename = "timeEnd")]
|
|
53
|
+
pub time_end: Option<String>,
|
|
54
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
55
|
+
pub tags: Option<Vec<String>>,
|
|
56
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
57
|
+
pub checked: Option<bool>,
|
|
58
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
59
|
+
pub priority: Option<i64>,
|
|
60
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
61
|
+
pub status: Option<String>,
|
|
62
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
63
|
+
pub rating: Option<f64>,
|
|
64
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
65
|
+
pub url: Option<String>,
|
|
66
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
67
|
+
pub email: Option<String>,
|
|
68
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
69
|
+
pub phone: Option<String>,
|
|
70
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
71
|
+
pub number: Option<f64>,
|
|
72
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
73
|
+
pub unit: Option<String>,
|
|
74
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
75
|
+
pub subtitle: Option<String>,
|
|
76
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
77
|
+
pub note: Option<String>,
|
|
78
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
79
|
+
#[serde(rename = "taskProgress")]
|
|
80
|
+
pub task_progress: Option<f64>,
|
|
81
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
82
|
+
#[serde(rename = "assignedTo")]
|
|
83
|
+
pub assigned_to: Option<String>,
|
|
84
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
85
|
+
#[serde(rename = "coverUploadId")]
|
|
86
|
+
pub cover_upload_id: Option<String>,
|
|
87
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
88
|
+
#[serde(rename = "coverDocId")]
|
|
89
|
+
pub cover_doc_id: Option<String>,
|
|
90
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
91
|
+
#[serde(rename = "coverMimeType")]
|
|
92
|
+
pub cover_mime_type: Option<String>,
|
|
93
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
94
|
+
#[serde(rename = "__schemaVersion")]
|
|
95
|
+
pub _schema_version: Option<i64>,
|
|
96
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
97
|
+
#[serde(rename = "tableMode")]
|
|
98
|
+
pub table_mode: Option<TableTableMode>,
|
|
99
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
100
|
+
#[serde(rename = "tableSortDir")]
|
|
101
|
+
pub table_sort_dir: Option<TableTableSortDir>,
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
105
|
+
#[serde(rename_all = "kebab-case")]
|
|
106
|
+
pub enum DocTypeName {
|
|
107
|
+
Table,
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
111
|
+
#[serde(rename_all = "lowercase")]
|
|
112
|
+
pub enum BodyKind {
|
|
113
|
+
Ytext,
|
|
114
|
+
Yarray,
|
|
115
|
+
Ymap,
|
|
116
|
+
None,
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
pub const REGISTRY: &[(DocTypeName, u32, BodyKind, &[DocTypeName])] = &[
|
|
120
|
+
(DocTypeName::Table, 1u32, BodyKind::None, &[]),
|
|
121
|
+
];
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
//! AUTO-GENERATED by @abraca/schema (timeline).
|
|
2
|
+
//!
|
|
3
|
+
//! Source: `abracadabra-ts/packages/schema/src/generated/json-schema/timeline.json`.
|
|
4
|
+
//! Run `pnpm schema:gen` from the abracadabra-ts repo to regenerate.
|
|
5
|
+
//! Do not edit by hand — CI verifies that this file matches the generator output.
|
|
6
|
+
|
|
7
|
+
#![allow(clippy::all)]
|
|
8
|
+
#![allow(dead_code)]
|
|
9
|
+
|
|
10
|
+
use serde::{Deserialize, Serialize};
|
|
11
|
+
|
|
12
|
+
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
13
|
+
#[serde(deny_unknown_fields)]
|
|
14
|
+
pub struct TimelineMeta {
|
|
15
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
16
|
+
pub color: Option<String>,
|
|
17
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
18
|
+
pub icon: Option<String>,
|
|
19
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
20
|
+
#[serde(rename = "datetimeStart")]
|
|
21
|
+
pub datetime_start: Option<String>,
|
|
22
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
23
|
+
#[serde(rename = "datetimeEnd")]
|
|
24
|
+
pub datetime_end: Option<String>,
|
|
25
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
26
|
+
#[serde(rename = "allDay")]
|
|
27
|
+
pub all_day: Option<bool>,
|
|
28
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
29
|
+
#[serde(rename = "dateStart")]
|
|
30
|
+
pub date_start: Option<String>,
|
|
31
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
32
|
+
#[serde(rename = "dateEnd")]
|
|
33
|
+
pub date_end: Option<String>,
|
|
34
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
35
|
+
#[serde(rename = "timeStart")]
|
|
36
|
+
pub time_start: Option<String>,
|
|
37
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
38
|
+
#[serde(rename = "timeEnd")]
|
|
39
|
+
pub time_end: Option<String>,
|
|
40
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
41
|
+
pub tags: Option<Vec<String>>,
|
|
42
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
43
|
+
pub checked: Option<bool>,
|
|
44
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
45
|
+
pub priority: Option<i64>,
|
|
46
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
47
|
+
pub status: Option<String>,
|
|
48
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
49
|
+
pub rating: Option<f64>,
|
|
50
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
51
|
+
pub url: Option<String>,
|
|
52
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
53
|
+
pub email: Option<String>,
|
|
54
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
55
|
+
pub phone: Option<String>,
|
|
56
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
57
|
+
pub number: Option<f64>,
|
|
58
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
59
|
+
pub unit: Option<String>,
|
|
60
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
61
|
+
pub subtitle: Option<String>,
|
|
62
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
63
|
+
pub note: Option<String>,
|
|
64
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
65
|
+
#[serde(rename = "taskProgress")]
|
|
66
|
+
pub task_progress: Option<f64>,
|
|
67
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
68
|
+
#[serde(rename = "assignedTo")]
|
|
69
|
+
pub assigned_to: Option<String>,
|
|
70
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
71
|
+
#[serde(rename = "coverUploadId")]
|
|
72
|
+
pub cover_upload_id: Option<String>,
|
|
73
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
74
|
+
#[serde(rename = "coverDocId")]
|
|
75
|
+
pub cover_doc_id: Option<String>,
|
|
76
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
77
|
+
#[serde(rename = "coverMimeType")]
|
|
78
|
+
pub cover_mime_type: Option<String>,
|
|
79
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
80
|
+
#[serde(rename = "__schemaVersion")]
|
|
81
|
+
pub _schema_version: Option<i64>,
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
85
|
+
#[serde(rename_all = "kebab-case")]
|
|
86
|
+
pub enum DocTypeName {
|
|
87
|
+
Timeline,
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
91
|
+
#[serde(rename_all = "lowercase")]
|
|
92
|
+
pub enum BodyKind {
|
|
93
|
+
Ytext,
|
|
94
|
+
Yarray,
|
|
95
|
+
Ymap,
|
|
96
|
+
None,
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
pub const REGISTRY: &[(DocTypeName, u32, BodyKind, &[DocTypeName])] = &[
|
|
100
|
+
(DocTypeName::Timeline, 1u32, BodyKind::None, &[]),
|
|
101
|
+
];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AUTO-GENERATED by @abraca/schema (sheets).
|
|
3
|
+
*
|
|
4
|
+
* Source: ../types/sheets.ts
|
|
5
|
+
* Run `pnpm schema:gen` to regenerate. Do not edit by hand —
|
|
6
|
+
* CI verifies that this file matches the generator output.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type * as Y from "yjs";
|
|
10
|
+
import type { z } from "zod";
|
|
11
|
+
import type { SheetsMeta } from "../types/sheets.ts";
|
|
12
|
+
|
|
13
|
+
export type DocTypeName = "sheets";
|
|
14
|
+
|
|
15
|
+
export type DocMetaMap = {
|
|
16
|
+
"sheets": z.infer<typeof SheetsMeta>;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type DocBodyMap = {
|
|
20
|
+
"sheets": never;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type DocChildrenMap = {
|
|
24
|
+
"sheets": never;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export interface DocOf<N extends DocTypeName> {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly type: N;
|
|
30
|
+
readonly meta: DocMetaMap[N];
|
|
31
|
+
readonly body: DocBodyMap[N];
|
|
32
|
+
readonly children: ReadonlyArray<DocOf<DocChildrenMap[N]>>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type Doc = { [N in DocTypeName]: DocOf<N> }[DocTypeName];
|