@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.
Files changed (225) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +24 -1
  3. package/dist/Diagnostics.d.ts +8 -0
  4. package/dist/Diagnostics.js +14 -0
  5. package/dist/Editor.d.ts +12 -0
  6. package/dist/Editor.js +95 -0
  7. package/dist/OpBar.d.ts +14 -0
  8. package/dist/OpBar.js +15 -0
  9. package/dist/Output.d.ts +20 -0
  10. package/dist/Output.js +56 -0
  11. package/dist/Tabs.d.ts +15 -0
  12. package/dist/Tabs.js +23 -0
  13. package/dist/cue-lang.d.ts +8 -0
  14. package/dist/cue-lang.js +82 -0
  15. package/dist/docs.d.ts +64 -0
  16. package/dist/docs.js +42 -0
  17. package/dist/index.d.ts +12 -0
  18. package/dist/index.js +18 -0
  19. package/dist/markers.d.ts +11 -0
  20. package/dist/markers.js +45 -0
  21. package/dist/ops.d.ts +13 -0
  22. package/dist/ops.js +22 -0
  23. package/dist/positions.d.ts +7 -0
  24. package/dist/positions.js +40 -0
  25. package/dist/theme.d.ts +16 -0
  26. package/dist/theme.js +55 -0
  27. package/dist/types.d.ts +580 -0
  28. package/dist/types.js +85 -0
  29. package/errors/E0101.md +43 -0
  30. package/errors/E0102.md +34 -0
  31. package/errors/E0103.md +41 -0
  32. package/errors/E0104.md +5 -0
  33. package/errors/E0105.md +62 -0
  34. package/errors/E0106.md +46 -0
  35. package/errors/E0107.md +48 -0
  36. package/errors/E0108.md +45 -0
  37. package/errors/E0109.md +37 -0
  38. package/errors/E0110.md +17 -0
  39. package/errors/E0111.md +55 -0
  40. package/errors/E0112.md +40 -0
  41. package/errors/E0120.md +34 -0
  42. package/errors/E0121.md +34 -0
  43. package/errors/E0122.md +26 -0
  44. package/errors/E0123.md +37 -0
  45. package/errors/E0124.md +36 -0
  46. package/errors/E0125.md +43 -0
  47. package/errors/E0126.md +38 -0
  48. package/errors/E0128.md +34 -0
  49. package/errors/E0129.md +42 -0
  50. package/errors/E0130.md +43 -0
  51. package/errors/E0131.md +42 -0
  52. package/errors/E0132.md +40 -0
  53. package/errors/E0133.md +46 -0
  54. package/errors/E0134.md +36 -0
  55. package/errors/E0135.md +109 -0
  56. package/errors/E0137.md +37 -0
  57. package/errors/E0140.md +46 -0
  58. package/errors/E0141.md +35 -0
  59. package/errors/E0142.md +38 -0
  60. package/errors/E0143.md +62 -0
  61. package/errors/E0144.md +49 -0
  62. package/errors/E0145.md +48 -0
  63. package/errors/E0146.md +38 -0
  64. package/errors/E0147.md +57 -0
  65. package/errors/E0148.md +42 -0
  66. package/errors/E0149.md +27 -0
  67. package/errors/E0150.md +77 -0
  68. package/errors/E0151.md +47 -0
  69. package/errors/E0152.md +35 -0
  70. package/errors/E0201.md +35 -0
  71. package/errors/E0202.md +42 -0
  72. package/errors/E0203.md +37 -0
  73. package/errors/E0204.md +46 -0
  74. package/errors/E0205.md +47 -0
  75. package/errors/E0206.md +47 -0
  76. package/errors/E0208.md +59 -0
  77. package/errors/E0210.md +44 -0
  78. package/errors/E0211.md +43 -0
  79. package/errors/E0212.md +41 -0
  80. package/errors/E0213.md +42 -0
  81. package/errors/E0214.md +42 -0
  82. package/errors/E0215.md +44 -0
  83. package/errors/E0216.md +41 -0
  84. package/errors/E0217.md +43 -0
  85. package/errors/E0218.md +44 -0
  86. package/errors/E0230.md +46 -0
  87. package/errors/E0232.md +42 -0
  88. package/errors/E0233.md +42 -0
  89. package/errors/E0234.md +43 -0
  90. package/errors/E0240.md +31 -0
  91. package/errors/E0242.md +5 -0
  92. package/errors/E0243.md +5 -0
  93. package/errors/E0250.md +39 -0
  94. package/errors/E0251.md +83 -0
  95. package/errors/E0252.md +42 -0
  96. package/errors/E0253.md +142 -0
  97. package/errors/E0254.md +38 -0
  98. package/errors/E0301.md +43 -0
  99. package/errors/E0302.md +58 -0
  100. package/errors/E0303.md +57 -0
  101. package/errors/E0304.md +9 -0
  102. package/errors/E0305.md +55 -0
  103. package/errors/E0307.md +9 -0
  104. package/errors/E0308.md +9 -0
  105. package/errors/E0310.md +46 -0
  106. package/errors/E0311.md +46 -0
  107. package/errors/E0330.md +67 -0
  108. package/errors/E0331.md +64 -0
  109. package/errors/E0332.md +52 -0
  110. package/errors/E0333.md +61 -0
  111. package/errors/E0334.md +61 -0
  112. package/errors/E0335.md +57 -0
  113. package/errors/E0336.md +50 -0
  114. package/errors/E0337.md +54 -0
  115. package/errors/E0338.md +62 -0
  116. package/errors/E0340.md +57 -0
  117. package/errors/E0341.md +51 -0
  118. package/errors/E0342.md +53 -0
  119. package/errors/E0343.md +56 -0
  120. package/errors/E0344.md +58 -0
  121. package/errors/E0345.md +51 -0
  122. package/errors/E0346.md +45 -0
  123. package/errors/E0347.md +53 -0
  124. package/errors/E0348.md +50 -0
  125. package/errors/E0349.md +52 -0
  126. package/errors/E0350.md +54 -0
  127. package/errors/E0351.md +54 -0
  128. package/errors/E0352.md +60 -0
  129. package/errors/E0353.md +53 -0
  130. package/errors/E0354.md +43 -0
  131. package/errors/E0355.md +55 -0
  132. package/errors/E0356.md +65 -0
  133. package/errors/E0357.md +68 -0
  134. package/errors/E0358.md +50 -0
  135. package/errors/E0359.md +53 -0
  136. package/errors/E0360.md +59 -0
  137. package/errors/E0361.md +59 -0
  138. package/errors/E0362.md +56 -0
  139. package/errors/E0364.md +58 -0
  140. package/errors/E0365.md +58 -0
  141. package/errors/E0366.md +56 -0
  142. package/errors/E0367.md +57 -0
  143. package/errors/E0368.md +58 -0
  144. package/errors/E0369.md +60 -0
  145. package/errors/E0370.md +59 -0
  146. package/errors/E0371.md +59 -0
  147. package/errors/E0372.md +57 -0
  148. package/errors/E0380.md +71 -0
  149. package/errors/E0381.md +61 -0
  150. package/errors/E0382.md +64 -0
  151. package/errors/E0383.md +61 -0
  152. package/errors/E0384.md +63 -0
  153. package/errors/E0385.md +61 -0
  154. package/errors/E0386.md +59 -0
  155. package/errors/E0387.md +59 -0
  156. package/errors/E0388.md +60 -0
  157. package/errors/E0389.md +59 -0
  158. package/errors/E0390.md +59 -0
  159. package/errors/E0401.md +56 -0
  160. package/errors/E0402.md +51 -0
  161. package/errors/E0403.md +51 -0
  162. package/errors/E0404.md +57 -0
  163. package/errors/E0405.md +56 -0
  164. package/errors/E0406.md +53 -0
  165. package/errors/E0407.md +54 -0
  166. package/errors/E0410.md +56 -0
  167. package/errors/E0411.md +59 -0
  168. package/errors/E0412.md +59 -0
  169. package/errors/E0413.md +74 -0
  170. package/errors/E0414.md +53 -0
  171. package/errors/E0415.md +72 -0
  172. package/errors/E0416.md +67 -0
  173. package/errors/E0418.md +59 -0
  174. package/errors/E0420.md +71 -0
  175. package/errors/E0421.md +82 -0
  176. package/errors/E0422.md +82 -0
  177. package/errors/E0423.md +83 -0
  178. package/errors/E0501.md +51 -0
  179. package/errors/E0502.md +50 -0
  180. package/errors/E0503.md +52 -0
  181. package/errors/E0504.md +64 -0
  182. package/errors/E0505.md +51 -0
  183. package/errors/E0506.md +48 -0
  184. package/errors/E0507.md +41 -0
  185. package/errors/E0508.md +39 -0
  186. package/errors/E0601.md +22 -0
  187. package/errors/E0602.md +28 -0
  188. package/errors/E0603.md +65 -0
  189. package/errors/E0604.md +37 -0
  190. package/errors/E0605.md +36 -0
  191. package/errors/E0606.md +44 -0
  192. package/errors/E0607.md +57 -0
  193. package/errors/E0608.md +37 -0
  194. package/errors/E0609.md +33 -0
  195. package/errors/E0611.md +37 -0
  196. package/errors/E0612.md +34 -0
  197. package/errors/E0613.md +30 -0
  198. package/errors/E0614.md +36 -0
  199. package/errors/E0616.md +33 -0
  200. package/errors/E0617.md +15 -0
  201. package/errors/E0618.md +16 -0
  202. package/errors/E0620.md +37 -0
  203. package/errors/E0621.md +45 -0
  204. package/errors/E0622.md +34 -0
  205. package/errors/E0623.md +33 -0
  206. package/errors/E0624.md +34 -0
  207. package/errors/E0625.md +28 -0
  208. package/errors/E0626.md +54 -0
  209. package/errors/E0627.md +27 -0
  210. package/errors/E0628.md +63 -0
  211. package/errors/E0701.md +25 -0
  212. package/errors/E0801.md +23 -0
  213. package/errors/E0802.md +22 -0
  214. package/errors/E0803.md +22 -0
  215. package/errors/E0804.md +25 -0
  216. package/errors/E0805.md +26 -0
  217. package/errors/E0901.md +27 -0
  218. package/errors/E0902.md +40 -0
  219. package/errors/E0903.md +23 -0
  220. package/errors/E1001.md +53 -0
  221. package/errors/E1002.md +43 -0
  222. package/errors/E1003.md +40 -0
  223. package/errors/E1004.md +44 -0
  224. package/errors/README.md +215 -0
  225. package/package.json +29 -3
@@ -0,0 +1,60 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0388: a lens writes to a target constraint the checker cannot compare
4
+
5
+ The target constrains a computed value in a way the checker does not compare:
6
+ a regular expression, a validator, or alternatives with gaps. It does not
7
+ reason about string contents. Make the target accept any string, or copy a
8
+ field the target already constrains.
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
+ }
24
+ "1": {
25
+ "0": {
26
+ schema: {
27
+ id!: =~"^[a-z]+$"
28
+ }
29
+ }
30
+ }
31
+ }
32
+ lenses: {
33
+ "0.0->1.0": {
34
+ v0_0: _
35
+ v1_0: {
36
+ id: "x\(v0_0.a)"
37
+ }
38
+ }
39
+ "1.0->0.0": {
40
+ v1_0: _
41
+ v0_0: {
42
+ a: v1_0.id
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ thema reports:
49
+
50
+ ```
51
+ error[E0388]: id in the result of lens 0.0->1.0 is not total for some instance
52
+ --> lineage.cue:22:8
53
+ |
54
+ 22 | id: "x\(v0_0.a)"
55
+ | ^^^^^^^^^^^^
56
+ |
57
+ = note: id in the result of lens 0.0->1.0 is a string built by "x\(v0_0.a)", and the target schema accepts only some strings (=~"^[a-z]+$"); the checker does not reason about string contents: make the target accept any string, or copy a field the target already constrains
58
+ = note: a lens must be total: every instance of schema 0.0 must translate to an instance of schema 1.0 (totality rule unknown-target-constraint)
59
+ = help: write the mapping in a form the checker can follow, or add a lacuna where it cannot decide
60
+ ```
@@ -0,0 +1,59 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0389: a lens indexes a table with a value that is not a finite set of constants
4
+
5
+ A lens indexes a table by a value that is not one of a finite set of string
6
+ constants. The checker needs every possible key to show each has an entry.
7
+
8
+ ## Example
9
+
10
+ `lineage.cue`:
11
+
12
+ ```cue
13
+ name: "ship"
14
+ schemas: {
15
+ "0": {
16
+ "0": {
17
+ schema: {
18
+ t: string
19
+ }
20
+ }
21
+ }
22
+ "1": {
23
+ "0": {
24
+ schema: {
25
+ u: 1 | 2
26
+ }
27
+ }
28
+ }
29
+ }
30
+ lenses: {
31
+ "0.0->1.0": {
32
+ _T: {a: 1, b: 2}
33
+ v0_0: _
34
+ v1_0: {
35
+ u: _T[v0_0.t]
36
+ }
37
+ }
38
+ "1.0->0.0": {
39
+ v1_0: _
40
+ v0_0: {
41
+ t: ""
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ thema reports:
48
+
49
+ ```
50
+ error[E0389]: u in the result of lens 0.0->1.0 is not total for some instance
51
+ --> lineage.cue:23:7
52
+ |
53
+ 23 | u: _T[v0_0.t]
54
+ | ^^
55
+ |
56
+ = note: u in the result of lens 0.0->1.0 indexes a table by v0_0.t, which may be string rather than one of a finite set of string constants; the checker needs every possible key
57
+ = note: a lens must be total: every instance of schema 0.0 must translate to an instance of schema 1.0 (totality rule unknown-table-key)
58
+ = help: write the mapping in a form the checker can follow, or add a lacuna where it cannot decide
59
+ ```
@@ -0,0 +1,59 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0390: a lens takes the first element of a list that may be empty
4
+
5
+ A lens takes the first element of a list built by a comprehension with no
6
+ fallback element. When the condition is false the list is empty and the index
7
+ fails. Add a fallback: `[if c {x}, y][0]`.
8
+
9
+ ## Example
10
+
11
+ `lineage.cue`:
12
+
13
+ ```cue
14
+ name: "ship"
15
+ schemas: {
16
+ "0": {
17
+ "0": {
18
+ schema: {
19
+ n: "a" | "b"
20
+ }
21
+ }
22
+ }
23
+ "1": {
24
+ "0": {
25
+ schema: {
26
+ s: string
27
+ }
28
+ }
29
+ }
30
+ }
31
+ lenses: {
32
+ "0.0->1.0": {
33
+ v0_0: _
34
+ v1_0: {
35
+ s: [if v0_0.n == "a" {"x"}][0]
36
+ }
37
+ }
38
+ "1.0->0.0": {
39
+ v1_0: _
40
+ v0_0: {
41
+ n: "a"
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ thema reports:
48
+
49
+ ```
50
+ error[E0390]: s in the result of lens 0.0->1.0 is not total for some instance
51
+ --> lineage.cue:22:7
52
+ |
53
+ 22 | s: [if v0_0.n == "a" {"x"}][0]
54
+ | ^
55
+ |
56
+ = note: s in the result of lens 0.0->1.0 takes the first element of a list built by if v0_0.n == "a" with no fallback, so when the conditions are false the list is empty and the index fails; add an unconditional fallback element: [if c {x}, y][0]
57
+ = note: a lens must be total: every instance of schema 0.0 must translate to an instance of schema 1.0 (totality rule unknown-head)
58
+ = help: write the mapping in a form the checker can follow, or add a lacuna where it cannot decide
59
+ ```
@@ -0,0 +1,56 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0401: a lens's lacunas are not listed unconditionally
4
+
5
+ A lens lists every lacuna it can emit unconditionally; each lacuna's own
6
+ condition field decides whether it applies to an instance. A list built with a
7
+ comprehension has no known length until data arrives, so the lacunas cannot be
8
+ checked.
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
+ lacunas: [
38
+ if v0_1.b != _|_ {
39
+ {type: "DroppedField", message: "b was dropped"}
40
+ },
41
+ ]
42
+ }
43
+ }
44
+ ```
45
+
46
+ thema reports:
47
+
48
+ ```
49
+ error[E0401]: the lacunas of lens 0.1->0.0 are not listed unconditionally
50
+ --> lineage.cue:23:3
51
+ |
52
+ 23 | lacunas: [
53
+ | ^^^^^^^
54
+ |
55
+ = help: list every lacuna the lens can emit; each lacuna's condition field decides whether it applies
56
+ ```
@@ -0,0 +1,51 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0402: a lacuna has no message
4
+
5
+ Every lacuna has a message: the human-readable account of the gap in the
6
+ translation. This one has none.
7
+
8
+ ## Example
9
+
10
+ `lineage.cue`:
11
+
12
+ ```cue
13
+ name: "ship"
14
+ schemas: {
15
+ "0": {
16
+ "0": {
17
+ schema: {
18
+ a: string
19
+ }
20
+ }
21
+ "1": {
22
+ schema: {
23
+ a: string
24
+ b?: int
25
+ }
26
+ }
27
+ }
28
+ }
29
+ lenses: {
30
+ "0.1->0.0": {
31
+ v0_1: _
32
+ v0_0: {
33
+ a: v0_1.a
34
+ }
35
+ lacunas: [
36
+ {type: "DroppedField", condition: v0_1.b != _|_},
37
+ ]
38
+ }
39
+ }
40
+ ```
41
+
42
+ thema reports:
43
+
44
+ ```
45
+ error[E0402]: lacuna 0 of lens 0.1->0.0 has no message
46
+ --> lineage.cue:24:4
47
+ |
48
+ 24 | {type: "DroppedField", condition: v0_1.b != _|_},
49
+ | ^
50
+ |
51
+ ```
@@ -0,0 +1,51 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0403: a lacuna has no type
4
+
5
+ Every lacuna has a type, one of the lacuna types, saying what kind of gap it
6
+ describes. This one has none.
7
+
8
+ ## Example
9
+
10
+ `lineage.cue`:
11
+
12
+ ```cue
13
+ name: "ship"
14
+ schemas: {
15
+ "0": {
16
+ "0": {
17
+ schema: {
18
+ a: string
19
+ }
20
+ }
21
+ "1": {
22
+ schema: {
23
+ a: string
24
+ b?: int
25
+ }
26
+ }
27
+ }
28
+ }
29
+ lenses: {
30
+ "0.1->0.0": {
31
+ v0_1: _
32
+ v0_0: {
33
+ a: v0_1.a
34
+ }
35
+ lacunas: [
36
+ {message: "b was dropped", condition: v0_1.b != _|_},
37
+ ]
38
+ }
39
+ }
40
+ ```
41
+
42
+ thema reports:
43
+
44
+ ```
45
+ error[E0403]: lacuna 0 of lens 0.1->0.0 has no type
46
+ --> lineage.cue:24:4
47
+ |
48
+ 24 | {message: "b was dropped", condition: v0_1.b != _|_},
49
+ | ^
50
+ |
51
+ ```
@@ -0,0 +1,57 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0404: a lacuna names a field its schema does not declare
4
+
5
+ A lacuna's source fields are fields of the lens's source schema, and its target
6
+ fields are fields of its target schema. This lacuna names a field neither
7
+ schema declares.
8
+
9
+ ## Example
10
+
11
+ `lineage.cue`:
12
+
13
+ ```cue
14
+ name: "ship"
15
+ schemas: {
16
+ "0": {
17
+ "0": {
18
+ schema: {
19
+ a: string
20
+ }
21
+ }
22
+ "1": {
23
+ schema: {
24
+ a: string
25
+ b?: int
26
+ }
27
+ }
28
+ }
29
+ }
30
+ lenses: {
31
+ "0.1->0.0": {
32
+ v0_1: _
33
+ v0_0: {
34
+ a: v0_1.a
35
+ }
36
+ lacunas: [
37
+ {
38
+ type: "DroppedField"
39
+ message: "b was dropped"
40
+ condition: v0_1.b != _|_
41
+ sourceFields: [{path: "nope", value: 1}]
42
+ },
43
+ ]
44
+ }
45
+ }
46
+ ```
47
+
48
+ thema reports:
49
+
50
+ ```
51
+ error[E0404]: lacuna 0 of lens 0.1->0.0 names nope in sourceFields[0], which schema 0.1 does not declare
52
+ --> lineage.cue:28:21
53
+ |
54
+ 28 | sourceFields: [{path: "nope", value: 1}]
55
+ | ^^^^
56
+ |
57
+ ```
@@ -0,0 +1,56 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0405: a lacuna's field path is not a path
4
+
5
+ A lacuna names a field by its path in CUE path syntax, such as `a.b` or
6
+ `list[0]`. This lacuna's path is not one.
7
+
8
+ ## Example
9
+
10
+ `lineage.cue`:
11
+
12
+ ```cue
13
+ name: "ship"
14
+ schemas: {
15
+ "0": {
16
+ "0": {
17
+ schema: {
18
+ a: string
19
+ }
20
+ }
21
+ "1": {
22
+ schema: {
23
+ a: string
24
+ b?: int
25
+ }
26
+ }
27
+ }
28
+ }
29
+ lenses: {
30
+ "0.1->0.0": {
31
+ v0_1: _
32
+ v0_0: {
33
+ a: v0_1.a
34
+ }
35
+ lacunas: [
36
+ {
37
+ type: "DroppedField"
38
+ message: "b was dropped"
39
+ condition: v0_1.b != _|_
40
+ targetFields: [{path: "a..b", value: 1}]
41
+ },
42
+ ]
43
+ }
44
+ }
45
+ ```
46
+
47
+ thema reports:
48
+
49
+ ```
50
+ error[E0405]: lacuna 0 of lens 0.1->0.0 names a field with targetFields[0].path, but "a..b" is not a path
51
+ --> lineage.cue:28:21
52
+ |
53
+ 28 | targetFields: [{path: "a..b", value: 1}]
54
+ | ^^^^
55
+ |
56
+ ```
@@ -0,0 +1,53 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0406: a lacuna's type is not a lacuna type
4
+
5
+ A lacuna's type is one of the lacuna types thema defines; the help lists them.
6
+ This one names a type that does not exist.
7
+
8
+ ## Example
9
+
10
+ `lineage.cue`:
11
+
12
+ ```cue
13
+ name: "ship"
14
+ schemas: {
15
+ "0": {
16
+ "0": {
17
+ schema: {
18
+ a: string
19
+ }
20
+ }
21
+ "1": {
22
+ schema: {
23
+ a: string
24
+ b?: int
25
+ }
26
+ }
27
+ }
28
+ }
29
+ lenses: {
30
+ "0.1->0.0": {
31
+ v0_1: _
32
+ v0_0: {
33
+ a: v0_1.a
34
+ }
35
+ lacunas: [
36
+ {type: "Bogus", message: "b was dropped", condition: v0_1.b != _|_},
37
+ ]
38
+ }
39
+ }
40
+ ```
41
+
42
+ thema reports:
43
+
44
+ ```
45
+ error[E0406]: the lacuna's type is "Bogus", which is not a lacuna type
46
+ --> lineage.cue:24:11
47
+ |
48
+ 24 | {type: "Bogus", message: "b was dropped", condition: v0_1.b != _|_},
49
+ | ^^^^^^^
50
+ |
51
+ = detail: lenses.0.1->0.0.lacunas.0.type: 7 errors in empty disjunction:
52
+ = help: the lacuna types are "AmbiguousMapping", "ChangedDefault", "Defaulted", "DroppedField", "LossyFieldMapping", "Placeholder", "PrecisionLoss"
53
+ ```
@@ -0,0 +1,54 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0407: a field that is not part of a lacuna
4
+
5
+ A lacuna has a fixed set of fields: condition, sourceFields, targetFields,
6
+ message and type. A field outside that set is usually a typo; the help names
7
+ the closest.
8
+
9
+ ## Example
10
+
11
+ `lineage.cue`:
12
+
13
+ ```cue
14
+ name: "ship"
15
+ schemas: {
16
+ "0": {
17
+ "0": {
18
+ schema: {
19
+ a: string
20
+ }
21
+ }
22
+ "1": {
23
+ schema: {
24
+ a: string
25
+ b?: int
26
+ }
27
+ }
28
+ }
29
+ }
30
+ lenses: {
31
+ "0.1->0.0": {
32
+ v0_1: _
33
+ v0_0: {
34
+ a: v0_1.a
35
+ }
36
+ lacunas: [
37
+ {type: "DroppedField", message: "b was dropped", condition: v0_1.b != _|_, severity: 1},
38
+ ]
39
+ }
40
+ }
41
+ ```
42
+
43
+ thema reports:
44
+
45
+ ```
46
+ error[E0407]: severity is not a field of a lacuna
47
+ --> lineage.cue:24:79
48
+ |
49
+ 24 | {type: "DroppedField", message: "b was dropped", condition: v0_1.b != _|_, severity: 1},
50
+ | ^^^^^^^^
51
+ |
52
+ = detail: lenses.0.1->0.0.lacunas.0.severity: severity is not a field of a lacuna; a lacuna has only condition, sourceFields, targetFields, message and type
53
+ = help: a lacuna has only condition, sourceFields, targetFields, message, type
54
+ ```
@@ -0,0 +1,56 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0410: a lacunas declaration is not shaped as lacunas
4
+
5
+ The lacunas field is a struct keyed like the lens body: each key names a
6
+ mapping, and holds a list of that mapping's lacunas, or a struct of keys
7
+ beneath it. A value of any other shape is not a lacuna declaration.
8
+
9
+ ## Example
10
+
11
+ `ship/history/0.0.thema`:
12
+
13
+ ```cue
14
+ Schema: {
15
+ a: string
16
+ }
17
+ ```
18
+
19
+ `ship/history/1.0.thema`:
20
+
21
+ ```cue
22
+ Schema: {
23
+ a: string
24
+ b: int
25
+ }
26
+
27
+ ForwardLens: {
28
+ v0_0: _
29
+ v1_0: {
30
+ b: -1
31
+ }
32
+ lacunas: {
33
+ b: 5
34
+ }
35
+ }
36
+ ```
37
+
38
+ `ship/tip.thema`:
39
+
40
+ ```cue
41
+ Schema: {
42
+ a: string
43
+ b: int
44
+ }
45
+ ```
46
+
47
+ thema reports:
48
+
49
+ ```
50
+ error[E0410]: lacunas.b is a list of the mapping's lacunas, or a struct of keys beneath it
51
+ --> history/1.0.thema:12:6
52
+ |
53
+ 12 | b: 5
54
+ | ^
55
+ |
56
+ ```
@@ -0,0 +1,59 @@
1
+ <!-- Generated by go test ./diag; do not edit. -->
2
+
3
+ # E0411: a lacuna's type is not a lacuna type
4
+
5
+ A lacuna's type is one of thema's lacuna types, written as a bare name. The
6
+ message lists them.
7
+
8
+ ## Example
9
+
10
+ `ship/history/0.0.thema`:
11
+
12
+ ```cue
13
+ Schema: {
14
+ a: string
15
+ }
16
+ ```
17
+
18
+ `ship/history/1.0.thema`:
19
+
20
+ ```cue
21
+ Schema: {
22
+ a: string
23
+ b: int
24
+ }
25
+
26
+ ForwardLens: {
27
+ v0_0: _
28
+ v1_0: {
29
+ b: -1
30
+ }
31
+ lacunas: {
32
+ b: [{
33
+ type: Guess
34
+ message: "-1 is a placeholder"
35
+ }]
36
+ }
37
+ }
38
+ ```
39
+
40
+ `ship/tip.thema`:
41
+
42
+ ```cue
43
+ Schema: {
44
+ a: string
45
+ b: int
46
+ }
47
+ ```
48
+
49
+ thema reports:
50
+
51
+ ```
52
+ error[E0411]: the lacuna's type Guess is not a lacuna type
53
+ --> history/1.0.thema:13:13
54
+ |
55
+ 13 | type: Guess
56
+ | ^^^^^
57
+ |
58
+ = help: the lacuna types are Placeholder, DroppedField, LossyFieldMapping, ChangedDefault, PrecisionLoss, AmbiguousMapping, Defaulted
59
+ ```