@sdboyer/thema-ui 0.0.0-bootstrap.0 → 0.1.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/LICENSE +201 -0
- package/README.md +24 -1
- package/dist/Diagnostics.d.ts +8 -0
- package/dist/Diagnostics.js +14 -0
- package/dist/Editor.d.ts +12 -0
- package/dist/Editor.js +95 -0
- package/dist/OpBar.d.ts +14 -0
- package/dist/OpBar.js +15 -0
- package/dist/Output.d.ts +20 -0
- package/dist/Output.js +56 -0
- package/dist/Tabs.d.ts +15 -0
- package/dist/Tabs.js +23 -0
- package/dist/cue-lang.d.ts +8 -0
- package/dist/cue-lang.js +82 -0
- package/dist/docs.d.ts +64 -0
- package/dist/docs.js +42 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +18 -0
- package/dist/markers.d.ts +11 -0
- package/dist/markers.js +45 -0
- package/dist/ops.d.ts +13 -0
- package/dist/ops.js +22 -0
- package/dist/positions.d.ts +7 -0
- package/dist/positions.js +40 -0
- package/dist/theme.d.ts +16 -0
- package/dist/theme.js +55 -0
- package/dist/types.d.ts +580 -0
- package/dist/types.js +85 -0
- package/errors/E0101.md +43 -0
- package/errors/E0102.md +34 -0
- package/errors/E0103.md +41 -0
- package/errors/E0104.md +5 -0
- package/errors/E0105.md +62 -0
- package/errors/E0106.md +46 -0
- package/errors/E0107.md +48 -0
- package/errors/E0108.md +45 -0
- package/errors/E0109.md +37 -0
- package/errors/E0110.md +17 -0
- package/errors/E0111.md +55 -0
- package/errors/E0112.md +40 -0
- package/errors/E0120.md +34 -0
- package/errors/E0121.md +34 -0
- package/errors/E0122.md +26 -0
- package/errors/E0123.md +37 -0
- package/errors/E0124.md +36 -0
- package/errors/E0125.md +43 -0
- package/errors/E0126.md +38 -0
- package/errors/E0128.md +34 -0
- package/errors/E0129.md +42 -0
- package/errors/E0130.md +43 -0
- package/errors/E0131.md +42 -0
- package/errors/E0132.md +40 -0
- package/errors/E0133.md +46 -0
- package/errors/E0134.md +36 -0
- package/errors/E0135.md +109 -0
- package/errors/E0137.md +37 -0
- package/errors/E0140.md +46 -0
- package/errors/E0141.md +35 -0
- package/errors/E0142.md +38 -0
- package/errors/E0143.md +62 -0
- package/errors/E0144.md +49 -0
- package/errors/E0145.md +48 -0
- package/errors/E0146.md +38 -0
- package/errors/E0147.md +57 -0
- package/errors/E0148.md +42 -0
- package/errors/E0149.md +27 -0
- package/errors/E0150.md +77 -0
- package/errors/E0151.md +47 -0
- package/errors/E0152.md +35 -0
- package/errors/E0201.md +35 -0
- package/errors/E0202.md +42 -0
- package/errors/E0203.md +37 -0
- package/errors/E0204.md +46 -0
- package/errors/E0205.md +47 -0
- package/errors/E0206.md +47 -0
- package/errors/E0208.md +59 -0
- package/errors/E0210.md +44 -0
- package/errors/E0211.md +43 -0
- package/errors/E0212.md +41 -0
- package/errors/E0213.md +42 -0
- package/errors/E0214.md +42 -0
- package/errors/E0215.md +44 -0
- package/errors/E0216.md +41 -0
- package/errors/E0217.md +43 -0
- package/errors/E0218.md +44 -0
- package/errors/E0230.md +46 -0
- package/errors/E0232.md +42 -0
- package/errors/E0233.md +42 -0
- package/errors/E0234.md +43 -0
- package/errors/E0240.md +31 -0
- package/errors/E0242.md +5 -0
- package/errors/E0243.md +5 -0
- package/errors/E0250.md +39 -0
- package/errors/E0251.md +83 -0
- package/errors/E0252.md +42 -0
- package/errors/E0253.md +142 -0
- package/errors/E0254.md +38 -0
- package/errors/E0301.md +43 -0
- package/errors/E0302.md +58 -0
- package/errors/E0303.md +57 -0
- package/errors/E0304.md +9 -0
- package/errors/E0305.md +55 -0
- package/errors/E0307.md +9 -0
- package/errors/E0308.md +9 -0
- package/errors/E0310.md +46 -0
- package/errors/E0311.md +46 -0
- package/errors/E0330.md +67 -0
- package/errors/E0331.md +64 -0
- package/errors/E0332.md +52 -0
- package/errors/E0333.md +61 -0
- package/errors/E0334.md +61 -0
- package/errors/E0335.md +57 -0
- package/errors/E0336.md +50 -0
- package/errors/E0337.md +54 -0
- package/errors/E0338.md +62 -0
- package/errors/E0340.md +57 -0
- package/errors/E0341.md +51 -0
- package/errors/E0342.md +53 -0
- package/errors/E0343.md +56 -0
- package/errors/E0344.md +58 -0
- package/errors/E0345.md +51 -0
- package/errors/E0346.md +45 -0
- package/errors/E0347.md +53 -0
- package/errors/E0348.md +50 -0
- package/errors/E0349.md +52 -0
- package/errors/E0350.md +54 -0
- package/errors/E0351.md +54 -0
- package/errors/E0352.md +60 -0
- package/errors/E0353.md +53 -0
- package/errors/E0354.md +43 -0
- package/errors/E0355.md +55 -0
- package/errors/E0356.md +65 -0
- package/errors/E0357.md +68 -0
- package/errors/E0358.md +50 -0
- package/errors/E0359.md +53 -0
- package/errors/E0360.md +59 -0
- package/errors/E0361.md +59 -0
- package/errors/E0362.md +56 -0
- package/errors/E0364.md +58 -0
- package/errors/E0365.md +58 -0
- package/errors/E0366.md +56 -0
- package/errors/E0367.md +57 -0
- package/errors/E0368.md +58 -0
- package/errors/E0369.md +60 -0
- package/errors/E0370.md +59 -0
- package/errors/E0371.md +59 -0
- package/errors/E0372.md +57 -0
- package/errors/E0380.md +71 -0
- package/errors/E0381.md +61 -0
- package/errors/E0382.md +64 -0
- package/errors/E0383.md +61 -0
- package/errors/E0384.md +63 -0
- package/errors/E0385.md +61 -0
- package/errors/E0386.md +59 -0
- package/errors/E0387.md +59 -0
- package/errors/E0388.md +60 -0
- package/errors/E0389.md +59 -0
- package/errors/E0390.md +59 -0
- package/errors/E0401.md +56 -0
- package/errors/E0402.md +51 -0
- package/errors/E0403.md +51 -0
- package/errors/E0404.md +57 -0
- package/errors/E0405.md +56 -0
- package/errors/E0406.md +53 -0
- package/errors/E0407.md +54 -0
- package/errors/E0410.md +56 -0
- package/errors/E0411.md +59 -0
- package/errors/E0412.md +59 -0
- package/errors/E0413.md +74 -0
- package/errors/E0414.md +53 -0
- package/errors/E0415.md +72 -0
- package/errors/E0416.md +67 -0
- package/errors/E0418.md +59 -0
- package/errors/E0420.md +71 -0
- package/errors/E0421.md +82 -0
- package/errors/E0422.md +82 -0
- package/errors/E0423.md +83 -0
- package/errors/E0501.md +51 -0
- package/errors/E0502.md +50 -0
- package/errors/E0503.md +52 -0
- package/errors/E0504.md +64 -0
- package/errors/E0505.md +51 -0
- package/errors/E0506.md +48 -0
- package/errors/E0507.md +41 -0
- package/errors/E0508.md +39 -0
- package/errors/E0601.md +22 -0
- package/errors/E0602.md +28 -0
- package/errors/E0603.md +65 -0
- package/errors/E0604.md +37 -0
- package/errors/E0605.md +36 -0
- package/errors/E0606.md +44 -0
- package/errors/E0607.md +57 -0
- package/errors/E0608.md +37 -0
- package/errors/E0609.md +33 -0
- package/errors/E0611.md +37 -0
- package/errors/E0612.md +34 -0
- package/errors/E0613.md +30 -0
- package/errors/E0614.md +36 -0
- package/errors/E0616.md +33 -0
- package/errors/E0617.md +15 -0
- package/errors/E0618.md +16 -0
- package/errors/E0620.md +37 -0
- package/errors/E0621.md +45 -0
- package/errors/E0622.md +34 -0
- package/errors/E0623.md +33 -0
- package/errors/E0624.md +34 -0
- package/errors/E0625.md +28 -0
- package/errors/E0626.md +54 -0
- package/errors/E0627.md +27 -0
- package/errors/E0628.md +63 -0
- package/errors/E0701.md +25 -0
- package/errors/E0801.md +23 -0
- package/errors/E0802.md +22 -0
- package/errors/E0803.md +22 -0
- package/errors/E0804.md +25 -0
- package/errors/E0805.md +26 -0
- package/errors/E0901.md +27 -0
- package/errors/E0902.md +40 -0
- package/errors/E0903.md +23 -0
- package/errors/E1001.md +53 -0
- package/errors/E1002.md +43 -0
- package/errors/E1003.md +40 -0
- package/errors/E1004.md +44 -0
- package/errors/README.md +215 -0
- package/package.json +29 -3
package/errors/E0251.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0251: a published version's lens was changed
|
|
4
|
+
|
|
5
|
+
A version's lenses are part of it: an instance translated through the
|
|
6
|
+
published lens would translate differently through a changed one. Here the
|
|
7
|
+
candidate's 1.0 keeps its schema, but its ForwardLens writes a different
|
|
8
|
+
placeholder. The schema's identity is unchanged and its lenses' is not.
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
`candidate/ship/history/0.0.thema`:
|
|
13
|
+
|
|
14
|
+
```cue
|
|
15
|
+
Schema: {
|
|
16
|
+
name: string
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`candidate/ship/history/1.0.thema`:
|
|
21
|
+
|
|
22
|
+
```cue
|
|
23
|
+
Schema: {
|
|
24
|
+
name: string
|
|
25
|
+
size: int
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
ForwardLens: {
|
|
29
|
+
v0_0: _
|
|
30
|
+
v1_0: {
|
|
31
|
+
size: 0
|
|
32
|
+
}
|
|
33
|
+
lacunas: {
|
|
34
|
+
size: [{
|
|
35
|
+
type: Placeholder
|
|
36
|
+
message: "0 is a placeholder"
|
|
37
|
+
}]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`published/ship/history/0.0.thema`:
|
|
43
|
+
|
|
44
|
+
```cue
|
|
45
|
+
Schema: {
|
|
46
|
+
name: string
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`published/ship/history/1.0.thema`:
|
|
51
|
+
|
|
52
|
+
```cue
|
|
53
|
+
Schema: {
|
|
54
|
+
name: string
|
|
55
|
+
size: int
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
ForwardLens: {
|
|
59
|
+
v0_0: _
|
|
60
|
+
v1_0: {
|
|
61
|
+
size: -1
|
|
62
|
+
}
|
|
63
|
+
lacunas: {
|
|
64
|
+
size: [{
|
|
65
|
+
type: Placeholder
|
|
66
|
+
message: "-1 is a placeholder"
|
|
67
|
+
}]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
thema reports:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
error[E0251]: the ForwardLens in history/1.0.thema is not as published
|
|
76
|
+
--> candidate/ship/history/1.0.thema:6:1
|
|
77
|
+
|
|
|
78
|
+
6 | ForwardLens: {
|
|
79
|
+
| ^^^^^^^^^^^
|
|
80
|
+
|
|
|
81
|
+
= note: a version's lenses are part of it: instances already translated through the published lens would translate differently
|
|
82
|
+
= help: restore the ForwardLens in history/1.0.thema as it was published
|
|
83
|
+
```
|
package/errors/E0252.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0252: a published version was removed
|
|
4
|
+
|
|
5
|
+
A published version may have instances, so it is never removed. Here the
|
|
6
|
+
candidate's history/ stops at 0.0, and 0.1, which was published, is gone.
|
|
7
|
+
|
|
8
|
+
## Example
|
|
9
|
+
|
|
10
|
+
`candidate/ship/history/0.0.thema`:
|
|
11
|
+
|
|
12
|
+
```cue
|
|
13
|
+
Schema: {
|
|
14
|
+
name: string
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`published/ship/history/0.0.thema`:
|
|
19
|
+
|
|
20
|
+
```cue
|
|
21
|
+
Schema: {
|
|
22
|
+
name: string
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`published/ship/history/0.1.thema`:
|
|
27
|
+
|
|
28
|
+
```cue
|
|
29
|
+
Schema: {
|
|
30
|
+
name: string
|
|
31
|
+
size?: int
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
thema reports:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
error[E0252]: the lineage removes published version 0.1
|
|
39
|
+
|
|
|
40
|
+
= note: the schema in history/0.1.thema was published, so instances of it may exist
|
|
41
|
+
= help: restore the schema in history/0.1.thema as it was published; a published version is never removed
|
|
42
|
+
```
|
package/errors/E0253.md
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0253: a new version comes before the newest published version
|
|
4
|
+
|
|
5
|
+
Versions are only appended: a new version comes after the newest published
|
|
6
|
+
one. Here 0.0 and 1.0 were published, and the candidate adds 0.1 between them,
|
|
7
|
+
so the published 1.0 would no longer follow the version it was published
|
|
8
|
+
after. 1.0 itself is as published: its lenses map the same from 0.1 as from
|
|
9
|
+
0.0, and its backward lens derives the same drop of crew, though the drop's
|
|
10
|
+
message now names 0.1.
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
`candidate/ship/history/0.0.thema`:
|
|
15
|
+
|
|
16
|
+
```cue
|
|
17
|
+
Schema: {
|
|
18
|
+
size: int & <10
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`candidate/ship/history/0.1.thema`:
|
|
23
|
+
|
|
24
|
+
```cue
|
|
25
|
+
Schema: {
|
|
26
|
+
size: int & <20
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
BackwardLens: {
|
|
30
|
+
v0_1: _
|
|
31
|
+
v0_0: {
|
|
32
|
+
size: 0
|
|
33
|
+
}
|
|
34
|
+
lacunas: {
|
|
35
|
+
size: [{
|
|
36
|
+
type: Placeholder
|
|
37
|
+
message: "0 is a placeholder"
|
|
38
|
+
}]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`candidate/ship/history/1.0.thema`:
|
|
44
|
+
|
|
45
|
+
```cue
|
|
46
|
+
Schema: {
|
|
47
|
+
size: string
|
|
48
|
+
crew: int
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
ForwardLens: {
|
|
52
|
+
v0_1: _
|
|
53
|
+
v1_0: {
|
|
54
|
+
size: "unknown"
|
|
55
|
+
crew: 0
|
|
56
|
+
}
|
|
57
|
+
lacunas: {
|
|
58
|
+
size: [{
|
|
59
|
+
type: Placeholder
|
|
60
|
+
message: "unknown is a placeholder"
|
|
61
|
+
}]
|
|
62
|
+
crew: [{
|
|
63
|
+
type: Placeholder
|
|
64
|
+
message: "0 is a placeholder"
|
|
65
|
+
}]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
BackwardLens: {
|
|
70
|
+
v1_0: _
|
|
71
|
+
v0_1: {
|
|
72
|
+
size: 0
|
|
73
|
+
}
|
|
74
|
+
lacunas: {
|
|
75
|
+
size: [{
|
|
76
|
+
type: Placeholder
|
|
77
|
+
message: "0 is a placeholder"
|
|
78
|
+
}]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
`published/ship/history/0.0.thema`:
|
|
84
|
+
|
|
85
|
+
```cue
|
|
86
|
+
Schema: {
|
|
87
|
+
size: int & <10
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
`published/ship/history/1.0.thema`:
|
|
92
|
+
|
|
93
|
+
```cue
|
|
94
|
+
Schema: {
|
|
95
|
+
size: string
|
|
96
|
+
crew: int
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
ForwardLens: {
|
|
100
|
+
v0_0: _
|
|
101
|
+
v1_0: {
|
|
102
|
+
size: "unknown"
|
|
103
|
+
crew: 0
|
|
104
|
+
}
|
|
105
|
+
lacunas: {
|
|
106
|
+
size: [{
|
|
107
|
+
type: Placeholder
|
|
108
|
+
message: "unknown is a placeholder"
|
|
109
|
+
}]
|
|
110
|
+
crew: [{
|
|
111
|
+
type: Placeholder
|
|
112
|
+
message: "0 is a placeholder"
|
|
113
|
+
}]
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
BackwardLens: {
|
|
118
|
+
v1_0: _
|
|
119
|
+
v0_0: {
|
|
120
|
+
size: 0
|
|
121
|
+
}
|
|
122
|
+
lacunas: {
|
|
123
|
+
size: [{
|
|
124
|
+
type: Placeholder
|
|
125
|
+
message: "0 is a placeholder"
|
|
126
|
+
}]
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
thema reports:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
error[E0253]: new version 0.1 comes before published version 1.0
|
|
135
|
+
--> candidate/ship/history/0.1.thema:1:1
|
|
136
|
+
|
|
|
137
|
+
1 | Schema: {
|
|
138
|
+
| ^^^^^^
|
|
139
|
+
|
|
|
140
|
+
= note: versions are only appended: a new version comes after the newest published one, 1.0, so that every published version keeps its predecessor
|
|
141
|
+
= help: remove the schema in history/0.1.thema, and make the change in a version after 1.0
|
|
142
|
+
```
|
package/errors/E0254.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0254: the lineage's name differs from the name it was published with
|
|
4
|
+
|
|
5
|
+
A lineage is named for its directory, and its name is part of what was
|
|
6
|
+
published: what refers to the lineage names it. Here ship's history is
|
|
7
|
+
published again as boat. A lineage with a new name is a new lineage.
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
`candidate/boat/history/0.0.thema`:
|
|
12
|
+
|
|
13
|
+
```cue
|
|
14
|
+
Schema: {
|
|
15
|
+
name: string
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`published/ship/history/0.0.thema`:
|
|
20
|
+
|
|
21
|
+
```cue
|
|
22
|
+
Schema: {
|
|
23
|
+
name: string
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
thema reports:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
error[E0254]: the lineage is named boat, but was published as ship
|
|
31
|
+
--> candidate/boat/history/0.0.thema:1:1
|
|
32
|
+
|
|
|
33
|
+
1 | Schema: {
|
|
34
|
+
| ^^^^^^
|
|
35
|
+
|
|
|
36
|
+
= note: a lineage's name is part of what was published: what refers to it names it
|
|
37
|
+
= help: name it ship, or publish it as a new lineage
|
|
38
|
+
```
|
package/errors/E0301.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0301: the lineage lacks a lens its versions require
|
|
4
|
+
|
|
5
|
+
A lineage declares a lens from every schema back to its predecessor, and one
|
|
6
|
+
forward across every major version, so that an instance of any version can be
|
|
7
|
+
translated to any other. This lineage adds version 0.1 without the lens back to
|
|
8
|
+
0.0.
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
`lineage.cue`:
|
|
13
|
+
|
|
14
|
+
```cue
|
|
15
|
+
name: "ship"
|
|
16
|
+
schemas: {
|
|
17
|
+
"0": {
|
|
18
|
+
"0": {
|
|
19
|
+
schema: {
|
|
20
|
+
a: string
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
"1": {
|
|
24
|
+
schema: {
|
|
25
|
+
a: string
|
|
26
|
+
b?: int
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
thema reports:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
error[E0301]: the lineage has no lens 0.1->0.0
|
|
37
|
+
--> lineage.cue:1:1
|
|
38
|
+
|
|
|
39
|
+
1 | name: "ship"
|
|
40
|
+
| ^^^^
|
|
41
|
+
|
|
|
42
|
+
= note: every schema needs a lens back to its predecessor, so that instances of 0.1 can be translated to 0.0
|
|
43
|
+
```
|
package/errors/E0302.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0302: the lineage declares a lens its versions do not require
|
|
4
|
+
|
|
5
|
+
A lineage declares exactly the lenses its versions call for. A forward lens
|
|
6
|
+
across a minor version is one they do not: a minor version is backward
|
|
7
|
+
compatible, so translating forward is implicit. The note says why the lens is
|
|
8
|
+
not called for.
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
`lineage.cue`:
|
|
13
|
+
|
|
14
|
+
```cue
|
|
15
|
+
name: "ship"
|
|
16
|
+
schemas: {
|
|
17
|
+
"0": {
|
|
18
|
+
"0": {
|
|
19
|
+
schema: {
|
|
20
|
+
a: string
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
"1": {
|
|
24
|
+
schema: {
|
|
25
|
+
a: string
|
|
26
|
+
b?: int
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
lenses: {
|
|
32
|
+
"0.1->0.0": {
|
|
33
|
+
v0_1: _
|
|
34
|
+
v0_0: {
|
|
35
|
+
a: v0_1.a
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
"0.0->0.1": {
|
|
39
|
+
v0_0: _
|
|
40
|
+
v0_1: {
|
|
41
|
+
a: v0_0.a
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
thema reports:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
error[E0302]: the lineage's versions do not call for lens 0.0->0.1
|
|
51
|
+
--> lineage.cue:24:2
|
|
52
|
+
|
|
|
53
|
+
24 | "0.0->0.1": {
|
|
54
|
+
| ^^^^^^^^^^
|
|
55
|
+
|
|
|
56
|
+
= note: 0.1 is backward compatible with 0.0, so translating forward is implicit
|
|
57
|
+
= help: a lineage declares a lens from each schema back to its predecessor, and one forward across each major version
|
|
58
|
+
```
|
package/errors/E0303.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0303: a lens does not accept every instance of its source schema
|
|
4
|
+
|
|
5
|
+
A lens takes any instance of its source schema, in the field named after the
|
|
6
|
+
source version (v0_1 for a lens from 0.1), so it must accept every one of
|
|
7
|
+
them. A lens that constrains that field rejects some instances. Leave it as
|
|
8
|
+
`_`.
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
`lineage.cue`:
|
|
13
|
+
|
|
14
|
+
```cue
|
|
15
|
+
name: "ship"
|
|
16
|
+
schemas: {
|
|
17
|
+
"0": {
|
|
18
|
+
"0": {
|
|
19
|
+
schema: {
|
|
20
|
+
a: int
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
"1": {
|
|
24
|
+
schema: {
|
|
25
|
+
a: int
|
|
26
|
+
b?: int
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
lenses: {
|
|
32
|
+
"0.1->0.0": {
|
|
33
|
+
v0_1: {
|
|
34
|
+
a: string
|
|
35
|
+
}
|
|
36
|
+
v0_0: {
|
|
37
|
+
a: v0_1.a
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
thema reports:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
error[E0303]: the input of lens 0.1->0.0 does not accept every instance of schema 0.1
|
|
47
|
+
--> lineage.cue:19:3
|
|
48
|
+
|
|
|
49
|
+
19 | v0_1: {
|
|
50
|
+
| ^^^^
|
|
51
|
+
|
|
|
52
|
+
= note: in thema's own CUE
|
|
53
|
+
--> thema/lineage.cue:183:11
|
|
54
|
+
= detail: field a not present in {a:int,b?:int}
|
|
55
|
+
missing field "a"
|
|
56
|
+
= help: v0_1 stands for any instance of its source schema; leave it as _
|
|
57
|
+
```
|
package/errors/E0304.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0304: what a lens produces is not an instance of its target schema
|
|
4
|
+
|
|
5
|
+
This condition cannot arise when thema's checker is sound: every lens is proven total at bind, and the proof names the mapping at fault (E0360 to E0372) before this check runs.
|
|
6
|
+
|
|
7
|
+
If thema reports it, the bug is in thema, not in the lineage or the data.
|
|
8
|
+
Please report it at https://github.com/sdboyer/thema/issues with the lineage
|
|
9
|
+
and, for a translation, the instance.
|
package/errors/E0305.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0305: a lens writes a field its target schema does not declare
|
|
4
|
+
|
|
5
|
+
A lens writes only fields its target schema declares, however open the author
|
|
6
|
+
wrote the schema: a lens is bound to the schema as declared. A field written
|
|
7
|
+
under a condition counts; it exists once data makes the condition true. Hidden
|
|
8
|
+
fields the target does not declare are the lens's own scratch space and are
|
|
9
|
+
not checked.
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
`lineage.cue`:
|
|
14
|
+
|
|
15
|
+
```cue
|
|
16
|
+
name: "ship"
|
|
17
|
+
schemas: {
|
|
18
|
+
"0": {
|
|
19
|
+
"0": {
|
|
20
|
+
schema: {
|
|
21
|
+
a: string
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
"1": {
|
|
25
|
+
schema: {
|
|
26
|
+
a: string
|
|
27
|
+
b?: int
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
lenses: {
|
|
33
|
+
"0.1->0.0": {
|
|
34
|
+
v0_1: _
|
|
35
|
+
v0_0: {
|
|
36
|
+
a: v0_1.a
|
|
37
|
+
if v0_1.a == "boom" {
|
|
38
|
+
extra: 1
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
thema reports:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
error[E0305]: the result of lens 0.1->0.0 writes extra, which schema 0.0 does not declare
|
|
49
|
+
--> lineage.cue:20:3
|
|
50
|
+
|
|
|
51
|
+
20 | v0_0: {
|
|
52
|
+
| ^^^^
|
|
53
|
+
|
|
|
54
|
+
= help: a lens writes only fields its target schema declares, however open the schema is written
|
|
55
|
+
```
|
package/errors/E0307.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0307: translating an instance, a lens produced something that is not concrete
|
|
4
|
+
|
|
5
|
+
This condition cannot arise when thema's checker is sound: every lens is proven total at bind, which rules out a result field left as a constraint for any instance (E0365).
|
|
6
|
+
|
|
7
|
+
If thema reports it, the bug is in thema, not in the lineage or the data.
|
|
8
|
+
Please report it at https://github.com/sdboyer/thema/issues with the lineage
|
|
9
|
+
and, for a translation, the instance.
|
package/errors/E0308.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0308: translating an instance, a lens failed
|
|
4
|
+
|
|
5
|
+
This condition cannot arise when thema's checker is sound: every lens is proven total at bind, which rules out a result the target schema rejects for any instance (E0360, E0366, E0367).
|
|
6
|
+
|
|
7
|
+
If thema reports it, the bug is in thema, not in the lineage or the data.
|
|
8
|
+
Please report it at https://github.com/sdboyer/thema/issues with the lineage
|
|
9
|
+
and, for a translation, the instance.
|
package/errors/E0310.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0310: a lens does not declare the instance it takes
|
|
4
|
+
|
|
5
|
+
A lens binds the instance it takes to a field named after the version it
|
|
6
|
+
maps from: v1_0 for a lens from 1.0. This lens does not declare it, so it has
|
|
7
|
+
nothing to map from.
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
`lineage.cue`:
|
|
12
|
+
|
|
13
|
+
```cue
|
|
14
|
+
lin: {
|
|
15
|
+
name: "ship"
|
|
16
|
+
schemas: {
|
|
17
|
+
"0": "0": {
|
|
18
|
+
schema: {a: string}
|
|
19
|
+
}
|
|
20
|
+
"1": "0": {
|
|
21
|
+
schema: {b: string}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
lenses: {
|
|
25
|
+
"1.0->0.0": {
|
|
26
|
+
v0_0: {a: "x"}
|
|
27
|
+
}
|
|
28
|
+
"0.0->1.0": {
|
|
29
|
+
v0_0: _
|
|
30
|
+
v1_0: {b: v0_0.a}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
thema reports:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
error[E0310]: lens 1.0->0.0 does not declare v1_0, the instance of 1.0 it takes
|
|
40
|
+
--> lineage.cue:12:3
|
|
41
|
+
|
|
|
42
|
+
12 | "1.0->0.0": {
|
|
43
|
+
| ^^^^^^^^^^
|
|
44
|
+
|
|
|
45
|
+
= help: write v1_0: _
|
|
46
|
+
```
|
package/errors/E0311.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0311: a lens does not declare the instance it returns
|
|
4
|
+
|
|
5
|
+
A lens returns the instance it builds in a field named after the version it
|
|
6
|
+
maps to: v0_0 for a lens to 0.0. This lens does not declare it, so it returns
|
|
7
|
+
nothing.
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
`lineage.cue`:
|
|
12
|
+
|
|
13
|
+
```cue
|
|
14
|
+
lin: {
|
|
15
|
+
name: "ship"
|
|
16
|
+
schemas: {
|
|
17
|
+
"0": "0": {
|
|
18
|
+
schema: {a: string}
|
|
19
|
+
}
|
|
20
|
+
"1": "0": {
|
|
21
|
+
schema: {b: string}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
lenses: {
|
|
25
|
+
"1.0->0.0": {
|
|
26
|
+
v1_0: _
|
|
27
|
+
}
|
|
28
|
+
"0.0->1.0": {
|
|
29
|
+
v0_0: _
|
|
30
|
+
v1_0: {b: v0_0.a}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
thema reports:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
error[E0311]: lens 1.0->0.0 does not declare v0_0, the instance of 0.0 it returns
|
|
40
|
+
--> lineage.cue:12:3
|
|
41
|
+
|
|
|
42
|
+
12 | "1.0->0.0": {
|
|
43
|
+
| ^^^^^^^^^^
|
|
44
|
+
|
|
|
45
|
+
= help: write v0_0: {...}, mapping each field of 0.0
|
|
46
|
+
```
|
package/errors/E0330.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<!-- Generated by go test ./diag; do not edit. -->
|
|
2
|
+
|
|
3
|
+
# E0330: a lens body holds something that is not a mapping
|
|
4
|
+
|
|
5
|
+
A lens body holds only mappings: a target field and where it comes from.
|
|
6
|
+
Embeddings, comprehensions and let declarations are not mappings. A reference
|
|
7
|
+
to an optional field is guarded for you, and coalesce decides what to use when it
|
|
8
|
+
is absent.
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
`ship/history/0.0.thema`:
|
|
13
|
+
|
|
14
|
+
```cue
|
|
15
|
+
Schema: {
|
|
16
|
+
a: string
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`ship/history/1.0.thema`:
|
|
21
|
+
|
|
22
|
+
```cue
|
|
23
|
+
Schema: {
|
|
24
|
+
b: string
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
ForwardLens: {
|
|
28
|
+
v0_0: _
|
|
29
|
+
v1_0: {
|
|
30
|
+
let x = v0_0.a
|
|
31
|
+
b: x
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`ship/tip.thema`:
|
|
37
|
+
|
|
38
|
+
```cue
|
|
39
|
+
Schema: {
|
|
40
|
+
b: string
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
thema reports:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
error[E0330]: let is not allowed in a lens body
|
|
48
|
+
--> history/1.0.thema:8:3
|
|
49
|
+
|
|
|
50
|
+
8 | let x = v0_0.a
|
|
51
|
+
| ^^^
|
|
52
|
+
|
|
|
53
|
+
|
|
54
|
+
error[E0418]: x is not defined in a lens; an expression refers to v0_0, to len, quo, rem, div, mod and to the strings functions
|
|
55
|
+
--> history/1.0.thema:9:6
|
|
56
|
+
|
|
|
57
|
+
9 | b: x
|
|
58
|
+
| ^
|
|
59
|
+
|
|
|
60
|
+
|
|
61
|
+
error[E0347]: 0.0 declares a and 1.0 does not, and nothing maps it: write <field>: v0_0.a to move it, or a: _drop
|
|
62
|
+
--> history/1.0.thema:5:1
|
|
63
|
+
|
|
|
64
|
+
5 | ForwardLens: {
|
|
65
|
+
| ^^^^^^^^^^^
|
|
66
|
+
|
|
|
67
|
+
```
|