@things-factory/figure-service 10.1.4 → 10.1.7

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 (52) hide show
  1. package/coverage/clover.xml +6 -0
  2. package/coverage/coverage-final.json +1 -0
  3. package/coverage/lcov-report/base.css +224 -0
  4. package/coverage/lcov-report/block-navigation.js +87 -0
  5. package/coverage/lcov-report/favicon.png +0 -0
  6. package/coverage/lcov-report/index.html +101 -0
  7. package/coverage/lcov-report/prettify.css +1 -0
  8. package/coverage/lcov-report/prettify.js +2 -0
  9. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  10. package/coverage/lcov-report/sorter.js +210 -0
  11. package/coverage/lcov.info +0 -0
  12. package/dist-server/index.d.ts +2 -0
  13. package/dist-server/index.js +13 -0
  14. package/dist-server/index.js.map +1 -1
  15. package/dist-server/routers/figure-thumbnail-router.d.ts +24 -0
  16. package/dist-server/routers/figure-thumbnail-router.js +93 -0
  17. package/dist-server/routers/figure-thumbnail-router.js.map +1 -0
  18. package/dist-server/routes.d.ts +1 -0
  19. package/dist-server/routes.js +21 -0
  20. package/dist-server/routes.js.map +1 -0
  21. package/dist-server/service/figure/figure-gate.d.ts +55 -0
  22. package/dist-server/service/figure/figure-gate.js +64 -0
  23. package/dist-server/service/figure/figure-gate.js.map +1 -0
  24. package/dist-server/service/figure/figure-mutation.d.ts +6 -0
  25. package/dist-server/service/figure/figure-mutation.js +21 -0
  26. package/dist-server/service/figure/figure-mutation.js.map +1 -1
  27. package/dist-server/service/figure/figure-query.d.ts +9 -1
  28. package/dist-server/service/figure/figure-query.js +36 -1
  29. package/dist-server/service/figure/figure-query.js.map +1 -1
  30. package/dist-server/service/figure/figure-tools.d.ts +10 -0
  31. package/dist-server/service/figure/figure-tools.js +304 -0
  32. package/dist-server/service/figure/figure-tools.js.map +1 -0
  33. package/dist-server/service/figure/figure-type.d.ts +27 -0
  34. package/dist-server/service/figure/figure-type.js +66 -1
  35. package/dist-server/service/figure/figure-type.js.map +1 -1
  36. package/dist-server/service/figure/figure.d.ts +17 -1
  37. package/dist-server/service/figure/figure.js +6 -1
  38. package/dist-server/service/figure/figure.js.map +1 -1
  39. package/dist-server/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +8 -6
  41. package/server/index.ts +13 -0
  42. package/server/routers/figure-thumbnail-router.ts +110 -0
  43. package/server/routes.ts +24 -0
  44. package/server/service/figure/catalog-db.test.ts +162 -0
  45. package/server/service/figure/figure-gate.ts +119 -0
  46. package/server/service/figure/figure-mutation.ts +23 -0
  47. package/server/service/figure/figure-propose.test.ts +136 -4
  48. package/server/service/figure/figure-query.ts +34 -2
  49. package/server/service/figure/figure-tools.test.ts +284 -0
  50. package/server/service/figure/figure-tools.ts +320 -0
  51. package/server/service/figure/figure-type.ts +53 -0
  52. package/server/service/figure/figure.ts +22 -2
@@ -22,6 +22,9 @@ export class NewFigure {
22
22
  @Field({ nullable: true, description: 'Classification code used to group figures in the palette.' })
23
23
  category?: string
24
24
 
25
+ @Field(type => [String], { nullable: true, description: 'Free-form tags. A figure may carry several.' })
26
+ tags?: string[]
27
+
25
28
  @Field({ description: 'The canonical FigureSource JSON.' })
26
29
  source: string
27
30
 
@@ -52,6 +55,13 @@ export class FigurePatch {
52
55
  @Field({ nullable: true, description: 'The new classification code.' })
53
56
  category?: string
54
57
 
58
+ /*
59
+ 빈 배열과 안 준 것을 가른다. `undefined` 는 「건드리지 않는다」, `[]` 는 「전부 지운다」다.
60
+ 둘을 뭉개면 태그를 다 지우려는 저작자가 지울 방법을 잃는다.
61
+ */
62
+ @Field(type => [String], { nullable: true, description: 'The new tags. An empty list clears them; omitting the field leaves them.' })
63
+ tags?: string[]
64
+
55
65
  @Field({ nullable: true, description: 'The new FigureSource JSON.' })
56
66
  source?: string
57
67
 
@@ -110,3 +120,46 @@ export class FigureSaveResult {
110
120
  @Field(type => [FigureFinding], { description: 'Non-blocking findings. The save succeeded despite these.' })
111
121
  violations: FigureFinding[]
112
122
  }
123
+
124
+ /**
125
+ * 발행 판정 한 줄.
126
+ *
127
+ * `FigureFinding` 과 칸이 겹치지만 **`blocking` 이 하나 더 있다.** 저장 쪽 발견은 정의상 막지 않는
128
+ * 것들이라 그 칸이 필요 없었다. 발행 판정은 막는 것과 알리는 것을 함께 내므로, 어느 쪽인지를 값이
129
+ * 스스로 말해야 한다 — 코드를 보고 화면이 다시 분류하면 규칙이 두 벌이 된다.
130
+ */
131
+ @ObjectType({ description: 'One finding from the release gate.' })
132
+ export class FigureGateFinding {
133
+ @Field({ description: 'Stable code — figure-model validation codes, or sizing-splits / sizing-loose.' })
134
+ code: string
135
+
136
+ @Field({ description: 'Human-readable message.' })
137
+ message: string
138
+
139
+ @Field({ nullable: true, description: 'Why this is a problem — what a person sees when it happens.' })
140
+ why?: string
141
+
142
+ @Field({ nullable: true, description: 'What to change, naming the part and the value.' })
143
+ how?: string
144
+
145
+ @Field({ nullable: true, description: 'Where it points: part names that came apart, or a path in the source.' })
146
+ at?: string
147
+
148
+ @Field({ description: 'True when this finding blocks the release.' })
149
+ blocking: boolean
150
+ }
151
+
152
+ /**
153
+ * 발행 판정.
154
+ *
155
+ * 화면이 **발행을 누르기 전에** 물어보는 자리다. 눌러 보고 거절당하는 것으로 알게 되면, 무엇을
156
+ * 고쳐야 하는지 모른 채 단추만 두드리게 된다.
157
+ */
158
+ @ObjectType({ description: 'Whether a figure may be released, and why not.' })
159
+ export class FigureInspection {
160
+ @Field({ description: 'True when at least one finding blocks the release.' })
161
+ blocked: boolean
162
+
163
+ @Field(type => [FigureGateFinding], { description: 'Findings, blocking and advisory together.' })
164
+ findings: FigureGateFinding[]
165
+ }
@@ -89,11 +89,31 @@ export class Figure {
89
89
  @Field({ nullable: true, description: 'A detailed description for the figure.' })
90
90
  description?: string
91
91
 
92
- /** 분류 코드. 팔레트에서 묶어 보이는 기준. */
92
+ /**
93
+ * 분류 하나. **팔레트에서 묶어 보이는 기준이다.**
94
+ *
95
+ * 도형 하나에 하나뿐이다 — 팔레트는 목록을 한 벌로 나눠 보여 주므로, 한 도형이 두 묶음에
96
+ * 동시에 있으면 저작자가 같은 것을 두 번 만난다.
97
+ */
93
98
  @Column({ nullable: true })
94
- @Field({ nullable: true, description: 'Classification code used to group figures in the palette.' })
99
+ @Field({ nullable: true, description: 'Classification code used to group figures in the palette. One per figure.' })
95
100
  category?: string
96
101
 
102
+ /**
103
+ * 태그. **여럿 붙는다.**
104
+ *
105
+ * 분류와 다른 일을 한다. 분류는 「이것이 무엇인가」를 한 번 정하는 것이고, 태그는 「어디에
106
+ * 걸리는가」를 여러 갈래로 적는 것이다 — 컨베이어이면서 반출 구역의 것일 수 있다. 그래서
107
+ * 분류로는 못 하는 찾기가 된다.
108
+ *
109
+ * `simple-json` 으로 담는다. 사내 선례가 그것이고(`ops-master` · `organization` ·
110
+ * `personalization`), 드라이버마다 배열 타입이 다른 것을 피한다.
111
+ */
112
+ /* `simple-json` 과 `default: null` 은 사내 선례 그대로다 — board-template · attachment 가 같은 모양이다. */
113
+ @Column('simple-json', { nullable: true, default: null })
114
+ @Field(type => [String], { nullable: true, description: 'Free-form tags. A figure may carry several.' })
115
+ tags?: string[]
116
+
97
117
  @Column({ nullable: true, default: 'draft' })
98
118
  @Field({ nullable: true, description: "Lifecycle state — 'draft' figures do not appear in the board palette." })
99
119
  state?: 'draft' | 'released'